WPF:如何重新定义ApplicationCommands的CanExecute方法

时间:2010-03-27 18:43:53

标签: c# wpf command

我使用标准的剪切,复制和粘贴命令(它是ApplicationCommands类的一部分)。是否可以重新定义CanExecute方法?

这是我的代码:

XAML:

   <Window.CommandBindings>
        <CommandBinding Command="Copy"
                CanExecute="CopyCanExecute" Executed="CopyExecuted"/>       
    </Window.CommandBindings>

    <StackPanel>
        <TextBox Name="txt"></TextBox>
        <Button Command="Copy" CommandTarget="{Binding ElementName=txt}">copy</Button>
    </StackPanel>

代码隐藏:

private void CopyCanExecute(object sender, CanExecuteRoutedEventArgs e)
{
    e.CanExecute = false;
}

private void CopyExecuted(object sender, ExecutedRoutedEventArgs e)
{
    MessageBox.Show("Copy Executed");
}  

该按钮仍然表现得像它的命令是标准的复制命令。

4 个答案:

答案 0 :(得分:1)

您可以通过CommandBinding执行此操作。本地CommandBinding可以指定CanExecuteHandler。

有关详细信息和工作示例,请参阅this blog post

答案 1 :(得分:1)

当焦点位于已经处理过命令的文本框上时,复制命令将不起作用,但它将适用于CheckBox等元素。

答案 2 :(得分:0)

在CanExecute处理程序中,您可能需要添加`e.Handled = true;另外,它不会执行标准的Copy.CanExecute()

答案 3 :(得分:0)

您可以将命令绑定直接设置为文本框而不是窗口。