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

C# 视图模型中的MVVM清除文本框,c#,wpf,mvvm,viewmodel,C#,Wpf,Mvvm,Viewmodel,我正在试图清除视图模型中文本框中存储的数据 我可以使用.clear在视图xaml中清除此项;但是我不想使用代码隐藏 <TextBox Name ="UserFirstName" HorizontalAlignment="Right" Height="23" Margin="119,67,0,0" TextWrapping="Wrap" Text="{Binding User.FirstName, UpdateSourceTrigger=PropertyChanged}"

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

我希望每次单击页面时字段都会刷新


任何建议

文本框的
文本
属性都应绑定到viewmodel中的属性


更改viewmodel中属性的值时,文本框中的文本将通过数据绑定自动更新。

文本框的
文本属性应绑定到viewmodel中的属性


更改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
,只需将
字符串.Empty
分配给它,UI就会自动更新。

文本绑定到属性
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数据绑定视图模型实例中的更改

因此,现在,一旦您想清除
名字
,只需将
字符串赋值为空
,UI就会自动更新。

使用此代码(的更正版本)

马丁·齐克蒙德

使用此代码(的更正版本)

马丁·齐克蒙德


请显示一些代码请显示一些代码在问题中文本绑定到视图模型(
Text=“{Binding User.FirstName,UpdateSourceTrigger=PropertyChanged}”
)有一种方法我可以通过按钮剪辑清除此问题您的按钮应该绑定到视图模型中的
RelayCommand
,通过viewmodel中的ICommand属性公开此选项,并将按钮的
命令
属性绑定到该选项。调用它时,只需清除viewmodel属性中的文本。在问题中,文本绑定到视图模型(
text=“{Binding User.FirstName,UpdateSourceTrigger=PropertyChanged}”
)有一种方法我可以通过按钮剪辑清除此问题。您的按钮应该绑定到viewmodel中的
RelayCommand
,通过viewmodel中的ICommand属性公开此选项,并将按钮的
命令
属性绑定到该选项。调用它时,只需清除viewmodel属性中的文本。