[英]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.