我想对位于不同窗口中的 2 个按钮使用相同的自定义 RoutedCommand。
为了不重复代码,我想在应用程序的某处定义命令并将其绑定到两个按钮。
我想过使用 Style 来实现这一点。下面,我在一个简单的示例中重现了我的问题。
我在 App.Xaml 中声明样式:
<Application.Resources>
<Style TargetType="{x:Type Window}">
<Setter Property="CommandBindings">
<Setter.Value>
<!--<Window.CommandBindings>--> <!--I tried with or without this. Doesn't change-->
<CommandBinding Command="{x:Static local:App.testBindingCommand}"
Executed="OnExecuted" CanExecute="OnCanExecute" />
<!--</Window.CommandBindings>-->
</Setter.Value>
</Setter>
</Style>
</Application.Resources>
以及 App.Xaml.cs 中的自定义命令:
public static RoutedCommand testBindingCommand = new RoutedCommand();
private void OnExecuted(object sender, ExecutedRoutedEventArgs e)
{
System.Windows.MessageBox.Show("OnExecuted");
}
private void OnCanExecute(object sender, CanExecuteRoutedEventArgs e)
{
System.Windows.MessageBox.Show("OnCanExecute");
e.CanExecute = true;
}
编译器不喜欢该代码并给出错误:
错误 MC3080:无法设置属性设置器“CommandBindings”,因为它没有可访问的设置访问器。
AFAIK,Window 类有一个 CommandBindings 属性。
1) 使用 Style 来声明全局 CommandBindings 是否正确?如果没有,我该怎么办?
2) 为什么不能通过样式设置属性 CommandBindings ?
谢谢!