我正在为我的WPF应用程序实现全局快捷键(即应用程序范围的快捷键),它有多个窗口。为此,我正在做
CommandManager.RegisterClassInputBinding(typeof(Window), o); // o is just a keybinding
也就是说,我正在尝试使用Window类注册一个键绑定,这样无论哪个窗口处于活动状态,我的快捷键都能正常工作。但是我的代码在到达这一行时引发了以下异常:
System.InvalidOperationException未被用户代码处理 消息=此Freezable无法冻结。 源= WindowsBase
我在StackOverflow上查找了类似的问题,它们似乎是由freezable对象SolidColorBursh引起的。我认为这不适用于我的情况。有谁知道发生了什么?
答案 0 :(得分:0)
我今天遇到了这个问题并找到了问题。如果以下任何一项为真(来自下面链接的文档),则不能冻结 Freezable 对象:
我读到的方式基本上是,如果您绑定到任何对象的属性(在您的情况下为 Window),或者它的任何子属性(或子项的子属性等)具有任何数据绑定,它不能被冻结,这使得许多操作无法进行。
就我而言,我试图使用 EventTrigger 为另一个对象的属性设置值。我将该属性绑定到我的视图模型,因此由于上述原因而失败。 (我试图通过创建附加的 DependencyProperty 来将一些数据从视图中偷走,而没有做更合适的事情,这就是我最终完成的工作)。
有关此的 Microsoft 文档位于此处:https://docs.microsoft.com/en-us/dotnet/desktop/wpf/advanced/freezable-objects-overview