我在我的 WPF 应用程序中定义了许多自定义命令:
public class MyCommands {
public static RoutedUICommand CopyPlateCommand;
public static RoutedUICommand PreviousRecordCommand;
public static RoutedUICommand NextRecordCommand;
public static RoutedUICommand SearchCommand;
public static RoutedUICommand SearchPlateCommand;
}
我有一个使用这些命令的其中一些UserControl
:ContextMenus
<UserControl x:Class="MyNamespace.UserControl1"
. . . >
<UserControl.Resources>
<ContextMenu x:Key="ContextMenu" HorizontalAlignment="Left">
<MenuItem Header="Copy Plate" Command="{Binding cs:MyCommands.CopyPlateCommand}" />
<MenuItem Header="Search Plate" Command="{Binding cs:MyCommands.SearchPlateCommand}" />
</ContextMenu>
<ContextMenu x:Key="TextBoxMenu" HorizontalAlignment="Left">
<MenuItem Header="Copy" Command="{Binding Copy}" />
<MenuItem Header="Copy Plate" Command="{Binding cs:MyCommands.CopyPlateCommand}" />
<MenuItem Header="Search Plate" Command="{Binding cs:MyCommands.SearchPlateCommand}" />
</ContextMenu>
</UserControl.Resources>
. . .
</UserControl>
中没有命令绑定UserControl1
。
我有另一个UserControl
包含其中的实例UserControl1
。它还CommandBindings
包括上下文菜单中包含的命令UserControl1
:
<UserControl x:Class="MyNamespace.UserControl2"
. . . >
<UserControl.CommandBindings>
<CommandBinding Command="Copy" CanExecute="CopyCommand_CanExecute" Executed="CopyCommand_Executed" />
<CommandBinding Command="cs:MyCommands.CopyPlateCommand" CanExecute="CopyPlateCommand_CanExecute" Executed="CopyPlateCommand_Executed" />
<CommandBinding Command="cs:MyCommands.SearchPlateCommand" CanExecute="CopyPlateCommand_CanExecute" Executed="SearchPlateCommand_Executed" />
</UserControl.CommandBindings>
. . .
<c:UserControl1 . . . />
我已经在命令的各种处理程序中放置了断点,但是断点永远不会被命中。我做错了什么?我是否必须将命令绑定放入UserControl1
?
不,我的程序不使用 MVVM。我在听说 MVVM 之前就开始了这个项目。我打算在将来的某个时候将其转换为 MVVM,但我现在没有时间。我需要修复一些错误,这让我很受挫。
感谢您的理解。
托尼