繁体   English   中英

WPF执行命令时清除文本框

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

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