wpf 无法将Owner属性设置为已关闭的窗口:例外情况

tvz2xvvm  于 2023-01-14  发布在  其他
关注(0)|答案(3)|浏览(382)

我使用WPF 4.0和MVVM光工具包,我有以下代码:

public partial class View1: Window
{
    /// <summary>
    /// Initializes a new instance of the FavoritesView class.
    /// </summary>
    public View1()
    {
        InitializeComponent();
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {    
        Messenger.Default.Register<NotificationMessage>(this,
            (msg) =>
            {
                if (msg.Notification == "OpenDocument")
                {
                    DocumentView view = new DocumentView();
                    view.Owner=this;
                    view.ShowDialog();
                }
            });            
    }
}

当我多次打开-关闭DocumentView窗口时,我得到异常“无法将Owner属性设置为已关闭的窗口”。为什么?有什么想法吗?

wbgh16ku

wbgh16ku1#

您可以尝试从NotificationMessage注销以避免将来执行。

Messenger.Default.Unregister(this);
dzhpxtsq

dzhpxtsq2#

你需要从窗口关闭事件的消息中取消注册。2这将确保在创建新示例时不会发生重复注册。

private void Window_Closed(object sender, RoutedEventArgs e)
{ 
   Messenger.Default.UnRegister<NotificationMessage>(this);
}
yks3o0rb

yks3o0rb3#

有时候,检查你是否在初始化你的新窗口时出现了代码中断

相关问题