在WPF中,您只能对一个窗口调用一次
这对我来说似乎有点糟糕,但这就是规则。如果您再次调用
类似于这样的东西:
ShowDialog
。之后就无法再使用了。这对我来说似乎有点糟糕,但这就是规则。如果您再次调用
ShowDialog
,则会出现以下异常:
我想知道的是:如何检查Cannot set Visibility or call Show, ShowDialog, or WindowInteropHelper.EnsureHandle after a Window has closed
Window
(或实际上是UserControl
)是否已经调用了ShowDialog
(以便在再次调用ShowDialog
之前新建另一个)。类似于这样的东西:
public void ShowListOfClients()
{
// | This is the method I want to write
// V
RefreshViewIfNeeded(_myWindowOrUserControlThatShowsAList);
FillWindowWithBusinessData(_myWindowOrUserControlThatShowsAList);
_myWindowOrUserControlThatShowsAList.ShowDialog();
}
注意:显然,在上面的例子中,每次进入方法时创建一个新的WindowOrUserControlThatShowsAList
会更容易。但请考虑更复杂的情况。
ShowDialog()
。它可以避免异常,但会引起其他问题,例如无法退出进程,以及第二次显示窗口时无法正确显示。只有第二个建议(即始终重新创建窗口)是可行的。 - Peter DunihoIsClosed
,然后处理Closed
事件而不是Closing
,并在那里将属性值设置为true
- 这将直接解决所述问题,即“如何检测窗口是否已使用其“ShowDialog”调用”。 - Peter Duniho