[英]MVVM clear textbox in the view model
我試圖清除視圖模型中文本框中存儲的數據,我可以使用.clear在視圖xaml中清除它。 但我不想在后面使用代碼
<TextBox Name ="UserFirstName" HorizontalAlignment="Right" Height="23" Margin="119,67,0,0"
TextWrapping="Wrap" Text="{Binding User.FirstName, UpdateSourceTrigger=PropertyChanged}"
VerticalAlignment="Top" Width="163" TextChanged="UserFirstName_TextChanged"/>
我希望每次單擊頁面時刷新字段
有什么建議么
您的文本框的Text
屬性應綁定到viewmodel中的屬性。
當您在視圖模型中更改屬性的值時,文本框中的文本將通過數據綁定自動更新。
文本綁定到User.FirstName
屬性。 為了確保數據綁定有效,該屬性必須引發PropertyChanged
事件:
public class UserViewModel : INotifyPropertyChanged
{
private string _firstName = "";
public string FirstName
{
get { return _firstName; }
set { _firstName = value; OnPropertyChanged(); }
}
public event PropertyChanged;
private void OnPropertyChanged( [CallerMemberName] string propertyName )
{
PropertyChanged?.Invoke( this, new PropertyChanedEventArgs( propertyName ) );
}
}
MVVM依靠INotifyPropertyChanged
來通知XAML UI有關數據綁定視圖模型實例中的更改。
因此,現在,一旦您想清除FirstName
,只需為它分配string.Empty
,UI就會自動更新。
使用此代碼(的更正版本)
馬丁·齊克蒙德
public class UserViewModel : INotifyPropertyChanged{
private string _firstName = "";
public string FirstName{
get {
return _firstName;
}
set {
_firstName = value; OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged( [CallerMemberName] string propertyName = null ){
PropertyChanged?.Invoke( this, new PropertyChangedEventArgs( propertyName ) );
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.