WPF在命令执行时清除TextBox

时间:2017-12-29 20:34:35

标签: c# wpf

我有一个执行命令的按钮,并将文本框的内容作为命令参数传递。作为Button单击/命令执行过程的一部分,我想清除文本框。 文本框文本绑定到列表视图的选定项目 - 因此我不相信我可以使用绑定属性来操作文本框内容。 实现清算的最佳方式是什么?

这是文本框的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);
}

2 个答案:

答案 0 :(得分:0)

this.tbEditOption.Text = String.empty;

视图中无法访问 View 对象。

此外,由于您正在更改源,这将破坏绑定。

答案 1 :(得分:0)

从列表视图(':foo' => ':bar')取消选中所选项会使SelectedItem = null为空,因为Text已绑定到Text

然而,这可能会产生副作用。