【发布时间】:2023-04-10 21:38:02
【问题描述】:
关于 c# wpf 的问题
我正在使用 c# WPF 创建一个 Windows 应用程序,我正在使用来自数据库的 (c#) 菜单数据背后的代码的菜单控件在主窗口上创建菜单。我的数据库中还有一张用于键盘快捷键数据的表。所以,我想在相应的菜单项中分配那个快捷键值。我们怎样才能做到这一点?
简而言之,如何为动态菜单项分配动态快捷键值?
例如, 菜单是_Transactions 菜单项是 _Sales 子菜单项是 _Add 子菜单项是_Display
数据库中的快捷键数据 事务菜单的键值是 Alt + T
示例代码是...
try
{
menuContainer.Children.Clear();
System.Windows.Controls.Menu topMenu = new
System.Windows.Controls.Menu();
DataTable dtMainMenu = Global.DatabaseMethod.GetMenuData();
DataTable dtSubMenu = null;
DataTable dtChildMenu = null;
DataTable dtSubChildMenu = null;
if (dtMainMenu != null && dtMainMenu.Rows.Count > 0)
{
MenuItem parentMenuItem = null;
MenuItem subMenuItem = null;
MenuItem childMenuItem = null;
MenuItem subchildMenuItem = null;
DataRow[] dataRow = null;
dtMainMenu.DefaultView.Sort = "SequenceNumber ASC";
dtMainMenu = dtMainMenu.DefaultView.ToTable();
foreach (DataRow parentMenuRow in dtMainMenu.Rows)
{
parentMenuItem = new MenuItem();
parentMenuItem.Tag =
parentMenuRow[ColumnNameConstants.Slug].ToString() + "~" +
parentMenuRow[ColumnNameConstants.ID].ToString();
parentMenuItem.Header =
parentMenuRow[ColumnNameConstants.MenuName].ToString();
dataRow = Global.dtUserRole.Select("((MenuId='" +
Convert.ToInt32(parentMenuRow[ColumnNameConstants.ID]) + "' AND
SubMenuId=0 AND ChildMenuId=0) OR (MenuId='" +
Convert.ToInt32(parentMenuRow[ColumnNameConstants.ID]) + "'))");
parentMenuItem.PreviewMouseDown +=
MenuItem_PreviewMouseDown;
parentMenuItem.PreviewKeyDown +=
MenuItem_PreviewKeyDown;
if (dataRow.Length > 0)
{
topMenu.Items.Add(parentMenuItem);
if (!Convert.ToBoolean(dataRow[dataRow.Length -
1][ColumnNameConstants.VisibleRole]))
{
parentMenuItem.Visibility =
Visibility.Collapsed;
}
}
else
{
topMenu.Items.Add(parentMenuItem);
parentMenuItem.Visibility =
Visibility.Collapsed;
}
}
topMenu.Background = Brushes.Transparent;
topMenu.Foreground = Brushes.White;
topMenu.VerticalAlignment = VerticalAlignment.Center;
menuContainer.Children.Add(topMenu);
}
}
catch (Exception ex)
{
}
【问题讨论】:
-
你能给我们展示一些创建这些菜单项的代码吗?那么我们可能更容易准确地告诉你应该做什么。
标签: c# wpf menu keyboard-shortcuts