处理键盘事件 WPF

Handling Keyboard events WPF

在我的 WPF MVVM 应用程序中,我订阅了 UserControl1.xaml.cs 中的 PreviewKeyUpPreviewKeyDown

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 同时符合垃圾回收条件,这不是问题。

虽然垃圾收集器永远不会为您退订任何事件。