C# 如何在MVVM中单击时清除文本框
我有一个文本框和一个按钮,我想在点击按钮时清除文本框的内容。我使用的是MVVM棱镜 我的XAML是C# 如何在MVVM中单击时清除文本框,c#,wpf,mvvm,prism,C#,Wpf,Mvvm,Prism,我有一个文本框和一个按钮,我想在点击按钮时清除文本框的内容。我使用的是MVVM棱镜 我的XAML是 <TextBox Grid.Row="0" Text="{Binding Path=TextProperty,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" Name="txtUserEntry2"/> <Button Content="Select" Command="{Bindi
<TextBox Grid.Row="0" Text="{Binding
Path=TextProperty,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" Name="txtUserEntry2"/>
<Button Content="Select"
Command="{Binding Path=MyCommand}" />
但它并没有清除文本框。我遗漏了什么?您没有用正确的属性名称“TextProperty”触发PropertyChanged事件,或者我遗漏了什么?我从来没用过棱镜。 尝试: 或者更好:
private void MyCommandExecuted(object obj)
{
SetProperty(TextProperty, string.Empty);
MessageBox.Show("Command Executed");
}
并从属性setter中删除SetProperty调用 这是因为在setter中,您设置了两次字段,一次未触发PropertyChanged,另一次触发PropertyChanged,在第二组
SetProperty
中,只有在有新值时才会引发PropertyChanged
,但是您已经将字段设置为某个值,因此通过SetProperty
设置的集合将永远不会引发PropertyChanged,因为您正在将其设置为相同的值
因此,在setter中,您应该删除:
selectedText = value;
看,这不是MVVM惯例。
private void MyCommandExecuted(object obj)
{
SetProperty(TextProperty, string.Empty);
MessageBox.Show("Command Executed");
}
selectedText = value;