2012-02-06 22 views
0

一度に1つのインスタンスしか開くことを許可しないウィンドウがある。ウィンドウを開閉することはできますが、同じウィンドウの複数のコピーをにすることはできません。は同時に開きます。ウィンドウが開いているときにメニュー項目をロックする。閉じるときにロック解除する

このオプションをクリックすると、ProductSelectionウィンドウが開きます。 ListProductListは私のボタンです:私は、イベントハンドラが実行されないため、複数のウィンドウを開いていないことを確認するために、falseにListProductListボタンのe.CanExecuteを設定

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(); 
} 

注意してください。

ここで、_productListCanExecuteをtrueに戻すためにProductSelectionウィンドウが閉じられたことを検出するにはどうすればよいですか?モーダルウィンドウではありません。なぜなら、私は彼らに他のことをさせたいからです。

+0

あなたはおそらくこれを少し解説する必要があります:どのメニューを解除するのですか?どのウィンドウが閉じられていますか?メニューは閉じた同じウィンドウにありますか?おそらくもう少しコードが役に立つでしょう。 – NotMe

+0

私はWPFウィンドウを1つ持っています。ツールバーからメニューオプションを選択すると、そのオプションがロックされ、インスタンスのみが存在するようになります。 2番目のウィンドウはListProductListを呼び出すことによって開きます。これはe.canExecuteを設定してウィンドウをロックします(これらはコマンドバインディングによってリンクされます)。 try-catchのfinally節で –

+0

ListProductListを本質的にモーダルウィンドウに強制しようとしていますか?つまり、一度表示されると、このウィンドウが閉じられるまでユーザーは何もしたくないのですか? – NotMe

答えて

0

おそらく最も簡単な解決策は、pl変数をグローバルにすることです。

ボタンをクリックするたびに、既存のウィンドウを「表示」するだけです。

関連する問題