2012-02-06 97 views
0

我有一个窗口,我希望一次只允许打开它的一个实例。他们可以打开/关闭窗口,但不能同时打开同一个窗口的多个副本当窗口打开时锁定菜单项,关闭时解锁

我有一个选项菜单,点击后打开ProductSelection窗口。 ListProductList是我的按钮:

private void ListProductListCanExecute(object sender, CanExecuteRoutedEventArgs e) 
{ 
    e.CanExecute = _productListCanExecute; 
    //_productListCanExecute = !_productListCanExecute; 
} 

private void ListProductList(object sender, ExecutedRoutedEventArgs e) 
{ 
    _productListCanExecute = false; 
    ProductSelection pl = new ProductSelection(productCategoryList, productStyleList, productList); 
    pl.Show(); 
} 

请注意,我设置的e.CanExecute的ListProductList按钮为false,以确保该事件处理程序不运行,因此无法打开更多的窗口。

现在,如何检测ProductSelection窗口已关闭,以便将_productListCanExecute设置回true?这不是一个模式窗口,因为我想让他们做其他事情。

+0

您可能需要对此解释一下:解锁什么菜单?哪个窗户关闭?该菜单是否位于同一个窗口中,关闭...?可能更多的代码会有所帮助。 – NotMe 2012-02-06 23:23:11

+0

我有一个WPF窗口,当我从工具栏中选择一个菜单选项时,我锁定该选项,以便只有实例。第二个窗口通过调用ListProductList来打开,然后通过设置e.canExecute来锁定窗口(这些窗口通过一个命令绑定来链接)。基本上,如果你打开一个窗口,如果它是关闭的,可以强制执行一些代码,比如会发生 – 2012-02-06 23:38:36

+0

您是否试图强制ListProductList实质上是一个模态窗口?换句话说,一旦显示,您不希望用户在此窗口关闭之前做其他任何事情? – NotMe 2012-02-06 23:44:14

回答

0

可能这里最简单的解决方案是使pl变量成为全局变量。

每当按钮被点击,只是“显示”现有的窗口。

相关问题