有没有办法重用已经关闭的WPF窗口实例
我有一个窗口实例,通过单击按钮调用wInstance.ShowDialog()来显示,然后按Alt+F4关闭窗口。现在的问题是我不能再调用wInstance.ShowDialog()。如何再次重复使用相同的窗口实例 例外情况:有没有办法重用已经关闭的WPF窗口实例,wpf,xaml,Wpf,Xaml,我有一个窗口实例,通过单击按钮调用wInstance.ShowDialog()来显示,然后按Alt+F4关闭窗口。现在的问题是我不能再调用wInstance.ShowDialog()。如何再次重复使用相同的窗口实例 例外情况: 窗口关闭后无法设置可见性或调用Show或ShowDialog。到底是什么原因使得使用同一窗口如此重要? 如果您使用的是MVVM,则可以将viewmodel重新用于新窗口。您需要覆盖wInstance OnClose方法,将窗口可见性设置为hidden并取消关闭事件 pr
窗口关闭后无法设置可见性或调用Show或ShowDialog。到底是什么原因使得使用同一窗口如此重要?
如果您使用的是MVVM,则可以将viewmodel重新用于新窗口。您需要覆盖wInstance OnClose方法,将窗口可见性设置为hidden并取消关闭事件
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
this.Visibility = Visibility.Hidden;
e.Cancel = true;
}
我将窗口重用为使用treeview的对话框,客户端希望树分支保持打开状态,以便进行更多选择 覆盖用于重用,分支保持扩展状态
我没有使用视图模型来保持简单,因为它是一个只读选择对话框。但由于我似乎还不能清除选择,我可能不得不切换到视图模型。但我想消除创建新窗口实例的成本。因此,检查是否存在可重用范围,并在实例上再次使用ShowDialog()。创建窗口是否有那么昂贵?Martin Doms的回答是正确的,但我自己对这个问题非常好奇。您是否可能高估了创建此视图的开销,尤其是在使用MVVM并保持VM的情况下?我的窗口很重,但速度很快,但我正在考虑重用它,因为在旧计算机或低端计算机上,显示它需要几毫秒的时间。很难注意到,但我希望它是即时的Hanks Martin,这是我前几天问自己的一个问题的答案。我在这里也有同样的问题,虽然这在我再次尝试使用窗口时阻止了异常,但它阻止了ShowDialog()在我预期的情况下返回true。您对此有什么建议吗?ShowDialog()的返回值表示如何处理该对话框。如果此信息对您很重要,那么您将需要在窗口关闭时实际处理它,因此您不应该取消关闭事件,而应该在您想要重新打开它时实例化一个新窗口。如果窗口的状态信息是重要的,考虑纪念品图案。可能的复制品不能是一个更新的帖子的复制品。那篇文章肯定是这篇文章的翻版吗?