繁体   English   中英

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

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM