在不同的文件中有两个不同的UI元素:一个menuItem(在window.xaml中)和一个userControl(在foo.xaml中)。
两者具有完全相同的逻辑:仅当条件匹配并调用相同的方法时,才会启用它们。为了编写这个逻辑,我使用
路由命令
.
CanExecute
执行
我想改进代码以遵循D.R.Y.规则,并将routedCommand和附加方法外部化。这是两个文件中的绑定:
<CommandBinding Command="{x:Static RoutedCommands:TestRoutedCommand.test}"
Executed="RoutedCommands:TestRoutedCommand.OnTest"
CanExecute="RoutedCommands:TestRoutedCommand.CanTest" />
这是TestRoutedCmmand.cs:
public class TestRoutedCommand
{
public static RoutedCommand test = new RoutedCommand();
public static void OnTest(object sender, ExecutedRoutedEventArgs e)
{
System.Windows.MessageBox.Show("test -on");
}
public static void CanTest(object sender, CanExecuteRoutedEventArgs e)
{
System.Windows.MessageBox.Show("test -can");
e.CanExecute = true;
}
}
执行此操作时,编译器会报告以下错误:
Error 1 unknown generation error, 'MC6005Â :
Executed="RoutedCommands:TestRoutedCommand.OnTest" is not valid.
'RoutedCommands:TestRoutedCommand.OnTest' is not a valid name for an event handler method.
Only instance methods of the generated class or code-behind are valid
(译文可能不准确,因为原文不是英文)
是否有其他方法可以将我的方法外部化,或者我必须继续使用这4种方法,只调用另外2种方法?
注意:在我的项目中,这是30多个重复的routedCommand方法,仅调用其他2个。。。这就是为什么它让我如此烦恼。
谢谢