在WPF中以编程方式显示菜单
如何在WPF中以编程方式打开菜单(System.Windows.Controls.menu)?抓住菜单项,然后执行以下操作:在WPF中以编程方式显示菜单,wpf,menu,Wpf,Menu,如何在WPF中以编程方式打开菜单(System.Windows.Controls.menu)?抓住菜单项,然后执行以下操作: _menuItem.IsSubmenuOpen = true; 查看这个关于如何打开上下文菜单的示例 总之 你可以打电话: YourContextMenu.IsOpen = true; 这将显示上下文菜单,只需确保其与正在显示的框架元素关联即可)否,OP询问的是菜单类(System.Windows.Controls.menu)。它没有IsOpen属性。也许您正在考虑
_menuItem.IsSubmenuOpen = true;
查看这个关于如何打开上下文菜单的示例 总之 你可以打电话:
YourContextMenu.IsOpen = true;
这将显示上下文菜单,只需确保其与正在显示的框架元素关联即可)否,OP询问的是菜单类(System.Windows.Controls.menu)。它没有IsOpen属性。也许您正在考虑ContextMenu类。您还需要使用预期的“target”UIElement初始化
您的ContextMenu.PlacementTarget
。否则,从XAML字符串动态构造的菜单(使用XamlReader
)将无法解析资源,并且将没有图标。例如,听ContextMenu.Opened
,然后调用CnotextMenu.Focus()
,以确保它接收到键盘输入,例如,确保ESC键由上下文菜单处理(关闭),并且箭头键可用于导航。
void CmsBox_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
box = sender as WpfBox;
ContextMenu cms = new ContextMenu();
e.Handled = true;
...
}
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" });
}