我试图清除存储在视图模型中的文本框中的数据 我可以在视图xaml中使用.clear清除这个;但我不想使用背后的代码
<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"/>
我希望每次点击页面时刷新字段
任何建议
答案 0 :(得分:1)
文本框的Text
属性应绑定到viewmodel中的属性。
当你在viewmodel中更改属性的值时,文本框中的文本将只通过数据绑定自动更新。
答案 1 :(得分:1)
文本绑定到属性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
,用户界面就会自动更新。
答案 2 :(得分:0)
使用此代码(更正后的版本)
Martin Zikmund
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 ) );
}
}