如何在WPF中通过编程方式打开菜单(System.Windows.Controls.Menu)?
获取菜单项,然后执行以下操作:
_menuItem.IsSubmenuOpen = true;
看这个示例,学习如何打开上下文菜单。
http://www.uxpassion.com/2009/01/how-to-enable-and-show-context-menu-on-left-click-in-wpf/
简而言之
你只需要调用:
YourContextMenu.IsOpen = true;
这将显示上下文菜单,只需确保它与正在显示的 FrameworkElement 相关联即可。
private void button_Click(object sender, RoutedEventArgs e)
{
var button= sender as FrameworkElement;
if (button != null)
{
button.ContextMenu.IsOpen = true;
}
}
private void MainGrid_Loaded(object sender, RoutedEventArgs e)
{
IncList.ItemsSource = m_DataSource;
IncList.ContextMenu = new ContextMenu();
IncList.ContextMenu.Items.Add(new MenuItem() { Header = "Test1" });
IncList.ContextMenu.Items.Add(new MenuItem() { Header = "Test2" });
}
void CmsBox_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
box = sender as WpfBox;
ContextMenu cms = new ContextMenu();
e.Handled = true;
...
}
YourContextMenu.PlacementTarget
,并将其与预期的“目标”UIElement关联。否则,使用XamlReader
动态从 XAML 字符串构建菜单时将无法解析资源,并且可能没有图标等元素。 - zmechanicContextMenu.Opened
事件,然后调用ContextMenu.Focus()
确保它可以接收键盘输入,例如确保ESC键被上下文菜单处理(以关闭菜单)并且箭头键可用于导航。 - mike