我使用标准的剪切,复制和粘贴命令(它是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");
}
该按钮仍然表现得像它的命令是标准的复制命令。
答案 0 :(得分:1)
您可以通过CommandBinding执行此操作。本地CommandBinding可以指定CanExecuteHandler。
有关详细信息和工作示例,请参阅this blog post。
答案 1 :(得分:1)
当焦点位于已经处理过命令的文本框上时,复制命令将不起作用,但它将适用于CheckBox等元素。
答案 2 :(得分:0)
在CanExecute处理程序中,您可能需要添加`e.Handled = true;另外,它不会执行标准的Copy.CanExecute()
答案 3 :(得分:0)
您可以将命令绑定直接设置为文本框而不是窗口。