我对使用不同目标类型的WPF命令感到有点困惑.
所以,如果我定义一个命令
<Window.CommandBindings>
<CommandBinding Command="Copy"
Executed="CopyCmdExecuted"
CanExecute="CopyCmdCanExecute"/>
</Window.CommandBindings>
Run Code Online (Sandbox Code Playgroud)
现在我在上下文菜单中使用它:
<ContextMenu Name="FolderContextMenu">
<MenuItem Command="Copy"/>
</ContextMenu>
Run Code Online (Sandbox Code Playgroud)
我有一个方法来处理命令:
private void CopyCmdExecuted(object sender, ExecutedRoutedEventArgs e)
{
}
Run Code Online (Sandbox Code Playgroud)
我在一个普通的老菜单中使用它:
<Menu Name="editMenu">
<MenuItem Command="Copy"/>
</Menu>
Run Code Online (Sandbox Code Playgroud)
理解这一点我没有问题.但是如果目标对象是不同的类型,我有点困惑我该怎么办.
假设我有文件夹和用户,这两个文件都有一个带有New命令的上下文菜单(菜单栏编辑菜单也有New命令).
执行New时,无论是文件夹还是用户,都会执行CopyCmdExecuted.那么,我现在应该对目标进行解复用吗?就像是
private void CopyCmdExecuted(object sender, ExecutedRoutedEventArgs e)
{
if(sender is User)
// Do copy user stuff
if(sender is Folder)
// Do copy folder stuff
}
Run Code Online (Sandbox Code Playgroud)
如果我想要复制很多数据类型,那看起来有点烦人.我在这里不明白吗?
(显然,我可以让文件夹和用户从带有DoCopy的Copiable基类继承,但这似乎仍然是错误的.)