에 ContextMenu MenuItems를 계속 추가하면 컨텍스트 메뉴에 메뉴 항목을 추가 할 수 있습니다. 한 번 이상 클릭하면 상황에 맞는 메뉴 항목을 계속 추가 할 수 있습니다. 여기에 아래 코드가 있습니다. 코드를 사용하고클릭 이벤트에서 클릭 이벤트
<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;
}
}
이하입니다. 즉 런타임에 컨텍스트 메뉴의 메뉴 항목을 추가합니다.
감사를 추가 한 경우 확인하는 부울 데이터 멤버를 추가 ... 내가 한 번 더 의심의 여지가 ... OnMenuItemClick 이벤트 핸들러 방법 특정 btnmname을 식별 할 수 있습니다. 왜냐하면 3 버튼에 대해 동일한 메소드 및 이벤트 핸들러를 사용하고 싶습니다. 어떤 생각을 제안 할 수 있습니까? 이렇게하려면? – kida
@kida 보낸 사람 개체는 클릭 한 버튼이며, Button으로 캐스팅하고 이름을 확인할 수 있습니다. – makc