2011-10-29 24 views
0

へのアクセス:私は、メニュー項目のクリックを処理するために、次のコードを使用していメニュー項目(WPF)

private void MenuItem_Click(object sender, RoutedEventArgs e) 
{ 
    MenuItem mi = (MenuItem)sender; 

    switch (mi.Name) 
    { 
     case "MenuItem1": 
     . 
     . 
     ///How to disable MenuItem2 from here? 
     break; 

     case "MenuItem2": 
     . 
     . 
     break; 
    } 
    } 

私がクリックされたのMenuItemにアクセスすることができますが、どのように私はしませんでした別のMenuItemにアクセスしますクリックした?

答えて

1

nameプロパティでスイッチを使用しないで、代わりに各アイテムのイベントハンドラを作成してください。また、MenuItemが "静的"である場合は、すでに参照があるので、MenuItem2.LoremIpsumで使用できるはずです。静的でない場合はのMenuItem1への参照を追加できます(例:Tag="{x:Reference MenuItem2}")。mi.Tagをキャストしてそこから使用できます。もちろん、FindNameのような参照を取得する他の方法や、視覚的または論理的な木を歩く他の再帰的検索方法もあります。

名前の切り替え以外に、もう一方のメニュー項目にアクセスすることは良いアイデアだと思うと、物事が乱れることがあります。

+0

私はそれを直接アクセスすることができました。 MenuItem2.IsEnabled = false;実際に動作します。個別のイベントハンドラの使用についてのヒントをお寄せいただきありがとうございます。コードはあまりにも大きくないので、おそらく他のメニュー項目からアクセスすることはあまり面倒ではありません(うまくいけば)。 – kr13

0

VisualTreeHelperを使用して1つ上の階層に移動し、メニューに移動します。そこから、好きなものにアクセスできます。

関連する問題