MVVM清除视图模型中的文本框

时间:2016-11-01 10:34:56

标签: c# wpf mvvm viewmodel

我试图清除存储在视图模型中的文本框中的数据 我可以在视图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"/>

我希望每次点击页面时刷新字段

任何建议

3 个答案:

答案 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 ) );
    }
}