[英]WPF Clear a TextBox when a Command executes
我有一个按钮,它执行命令并将文本框的内容作为命令参数传递。 作为按钮单击/命令执行过程的一部分,我想清除文本框。 文本框文本绑定到列表视图的所选项目-因此,我不相信我可以使用bound属性来操纵文本框的内容。 实现清算的最佳方法是什么?
这是文本框的XAML:
<TextBox x:Name="tbEditOption"
Grid.Row="3"
Grid.Column="1"
Height="25"
Background="White"
Text="{Binding ElementName=lvOptions,
Path=SelectedItem.OptionText}"/>
和按钮:
<Button x:Name="btnAdd"
Margin="0 5"
Width="70"
Height="30"
Content="Add"
Command="{x:Static cmd:CustomCommands.AddOption}">
<Button.CommandParameter>
<MultiBinding Converter="{StaticResource MultiParameterConverter}">
<Binding ElementName="cbFilter" Path="SelectedIndex"/>
<Binding ElementName="tbEditOption" Path="Text"/>
</MultiBinding>
</Button.CommandParameter>
</Button>
最后是我的命令的代码:
public static RoutedUICommand AddOption
{
get { return _addOption; }
}
public static void AddOption_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
SetupViewModel vm = ((Control)e.OriginalSource).DataContext as SetupViewModel;
var values = (object[])e.Parameter;
e.CanExecute = ((int)values[0] >= 0 && !string.IsNullOrEmpty(values[1].ToString()));
}
public static void AddOption_Executed(object sender, ExecutedRoutedEventArgs e)
{
SetupViewModel vm = ((Control)e.OriginalSource).DataContext as SetupViewModel;
vm.AddOption(e.Parameter);
}
this.tbEditOption.Text = String.empty;
但是,在视图模型中不一定可以访问View对象。
另外,由于您正在更改源,因此这将破坏绑定。
从列表视图中取消选择所选项目( SelectedItem = null
)将使Text
空,因为Text
已绑定到SelectedItem.OptionText
。
但是,这可能会有副作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.