0

クリックイベントで、コンテキストメニューにメニュー項目を追加して返しましたが、複数回クリックすると、メニュー項目がコンテキストメニューに追加され続けます。ここでは、以下のコードを使用しています。

<StackPanel Grid.Row="13" Orientation="Horizontal" FlowDirection="LeftToRight">
                                    <Button  Name="btnMobile" Content="Home" HorizontalAlignment="Left" VerticalAlignment="Top"  Margin="0 0 20 0" Width="70"></Button>
                                    <!--<extToolkit:DropDownButton x:Name="ddBtnMobile" VerticalAlignment="Top" Width="30" HorizontalAlignment="Right" Margin="0 0 30 0" Height="20"/>-->
                                    <Button   HorizontalAlignment="Left" Name="ddBtnMobile" Width="30" Click="OnddBtnMobileClick"  Margin="0,0,0,5"  >
                                        <Button.Content>
                                            <Path x:Name="btnArrow3" Margin="4" VerticalAlignment="Center" Width="10" Fill="#FF527DB5" Stretch="Uniform" HorizontalAlignment="Right" Data="F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z "/>
                                        </Button.Content>
                                        <Button.ContextMenu>
                                            <ContextMenu Name="cMenu">

                                            </ContextMenu>
                                        </Button.ContextMenu>
                                    </Button>
                                </StackPanel>

使用しているコードは以下です

     private void OnddBtnMobileClick(object sender, RoutedEventArgs e)
                {
                    mnItem = new MenuItem();
                    mnItem.Header ="B1"; 
                    cMenu.Items.Add(mnItem);
                    mnItem = new MenuItem();
                    mnItem.Header ="A1";
                    cMenu.Items.Add(mnItem);
                    mnItem = new MenuItem();
                    mnItem.Header="B 2";
                    cMenu.Items.Add(mnItem);
 cMenu.AddHandler(MenuItem.ClickEvent, new RoutedEventHandler(OnMenuItemClick));
                }

  private void OnMenuItemClick(object sender, RoutedEventArgs e)
                {
                    RoutedEventArgs args = e as RoutedEventArgs;
                    MenuItem item = args.OriginalSource as MenuItem;
                    string header = item.Header.ToString();
                    if (header == "Business")
                    {
                        btnMobile.Content = header;
                    }
                    else if (header == "Assistant")
                    {
                        btnMobile.Content = header;
                    }

                }

私の問題を解決する方法..上記のロジックを記述するより良い方法はありますか。つまり、実行時にコンテキスト メニューのメニュー項目を追加します。

4

2 に答える 2