我正在为我的 WPF 应用程序实现全局快捷键(即应用程序范围的快捷键),它有多个窗口。为了实现这一点,我正在做:
CommandManager.RegisterClassInputBinding(typeof(Window), o); // o is just a keybinding
也就是说,我正在尝试使用 Window 类注册一个键绑定,以便我的快捷键可以工作,无论哪个窗口处于活动状态。但是我的代码在到达这一行时抛出了以下异常:
System.InvalidOperationException 未被用户代码处理
Message=这个 Freezable 不能被冻结。
源=WindowsBase
堆栈跟踪:
at System.Windows.Freezable.Freeze()
at System.Windows.Input.CommandManager.RegisterClassInputBinding(Type type, InputBinding inputBinding)
这是o
创建键绑定的方式:
KeyBinding o = new KeyBinding()
{
Command = f,
CommandParameter = popup,
Key = Key.Q,
Modifiers = ModifierKeys.Control
};
popup
只是一个 wpf 弹出窗口。f
是实现ICommand
接口的类的对象。
我在 StackOverflow 上查找了类似的问题,它们似乎是由可冻结对象 SolidColorBursh 引起的。我认为这不适用于我的情况。有谁知道发生了什么?