处理键盘事件 WPF
Handling Keyboard events WPF
在我的 WPF MVVM 应用程序中,我订阅了 UserControl1.xaml.cs
中的 PreviewKeyUp
和 PreviewKeyDown
:
UserControl1_Loaded(object sender, RoutedEventArgs e)
{
var window = Window.GetWindow(this);
window.PreviewKeyUp += UserControl1_PreviewKeyUp;
window.PreviewKeyDown += UserControl1_PreviewKeyDown;
}
我应该担心内存泄漏吗?我必须在 Unloaded
活动中取消订阅这些活动还是由 GC 处理?
Should I worry about a memory leak?
仅当发布事件的父 window 比订阅事件的 UserControl
寿命长。
Do I have to unsubscribe from these events in the Unloaded event or will the GC take care of it?
您需要不明确地取消订阅 window,而不是让 UserControl
实例保持活动状态。同样,如果 window 和 UserControl
同时符合垃圾回收条件,这不是问题。
虽然垃圾收集器永远不会为您退订任何事件。
在我的 WPF MVVM 应用程序中,我订阅了 UserControl1.xaml.cs
中的 PreviewKeyUp
和 PreviewKeyDown
:
UserControl1_Loaded(object sender, RoutedEventArgs e)
{
var window = Window.GetWindow(this);
window.PreviewKeyUp += UserControl1_PreviewKeyUp;
window.PreviewKeyDown += UserControl1_PreviewKeyDown;
}
我应该担心内存泄漏吗?我必须在 Unloaded
活动中取消订阅这些活动还是由 GC 处理?
Should I worry about a memory leak?
仅当发布事件的父 window 比订阅事件的 UserControl
寿命长。
Do I have to unsubscribe from these events in the Unloaded event or will the GC take care of it?
您需要不明确地取消订阅 window,而不是让 UserControl
实例保持活动状态。同样,如果 window 和 UserControl
同时符合垃圾回收条件,这不是问题。
虽然垃圾收集器永远不会为您退订任何事件。