WPF中如何通过编程方式显示菜单

23

如何在WPF中通过编程方式打开菜单(System.Windows.Controls.Menu)?

5个回答

28

获取菜单项,然后执行以下操作:

_menuItem.IsSubmenuOpen = true;

27

1
不,OP正在询问Menu类(System.Windows.Controls.Menu)。它没有IsOpen属性。也许您在想ContextMenu类。 - Reg Edit
3
你还需要初始化 YourContextMenu.PlacementTarget,并将其与预期的“目标”UIElement关联。否则,使用 XamlReader 动态从 XAML 字符串构建菜单时将无法解析资源,并且可能没有图标等元素。 - zmechanic
另外有所帮助的是监听ContextMenu.Opened事件,然后调用ContextMenu.Focus()确保它可以接收键盘输入,例如确保ESC键被上下文菜单处理(以关闭菜单)并且箭头键可用于导航。 - mike

4
private void button_Click(object sender, RoutedEventArgs e)
{
    var button= sender as FrameworkElement;
    if (button != null)
    {
        button.ContextMenu.IsOpen = true;
    }
}

1
        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" });
        }

0
void CmsBox_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    box = sender as WpfBox;
    ContextMenu cms = new ContextMenu();
    e.Handled = true;
    ...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接