C# 将单击事件添加到按程序添加的菜单项
我正在处理一个C#WPF项目,我正在将一些项目存储在SQLite数据库中,当程序加载时,它会从数据库中检索项目并将项目添加到菜单中。然后,我需要做的是允许用户单击其中一个添加的菜单项,并根据单击的内容完成一些操作。我找不到任何关于如何执行此操作的信息,下面是我如何通过编程将菜单项添加到菜单的代码C# 将单击事件添加到按程序添加的菜单项,c#,wpf,menu,menuitem,C#,Wpf,Menu,Menuitem,我正在处理一个C#WPF项目,我正在将一些项目存储在SQLite数据库中,当程序加载时,它会从数据库中检索项目并将项目添加到菜单中。然后,我需要做的是允许用户单击其中一个添加的菜单项,并根据单击的内容完成一些操作。我找不到任何关于如何执行此操作的信息,下面是我如何通过编程将菜单项添加到菜单的代码 StoredDBConnectionManager storedDbConnectionManager = new StoredDBConnectionManager(Properties.Settin
StoredDBConnectionManager storedDbConnectionManager = new StoredDBConnectionManager(Properties.Settings.Default.app_dbPassword);
List<string> connections = storedDbConnectionManager.getStoredConnections();
foreach (string connection in connections)
{
mnuFileDBConnections.Items.Add(connection);
}
StoredDBConnectionManager StoredDBConnectionManager=newstoreddbconnectionmanager(Properties.Settings.Default.app\u dbPassword);
List connections=storedDbConnectionManager.getStoredConnections();
foreach(连接中的字符串连接)
{
mnuFileDBConnections.Items.Add(连接);
}
谢谢你能提供的帮助 应该有一个
菜单项
控件,您可以实例化连接
并将其用作标题
或内容
MenuItem
将有一个针对它的单击事件处理程序,或者您可以设置该命令
但是,理想情况下,您应该检索连接
集合,将其设置为模型
上的属性,然后将菜单
绑定到该集合,这样就只需为菜单使用项模板
e、 g
StoredDBConnectionManager StoredDBConnectionManager=newstoreddbconnectionmanager(Properties.Settings.Default.app\u dbPassword);
List connections=storedDbConnectionManager.getStoredConnections();
foreach(连接中的字符串连接)
{
var mi=new MenuItem()
{
标题=连接,
};
mi.Click+=ConnectionMenuItemClicked;
mnuFileDBConnections.Items.Add(mi);
}
或具有约束力:
<Menu ItemsSource="{Binding Connections}">
<Menu.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding}" Click="ConnectionsMenuItem_Clicked">
</MenuItem>
</DataTemplate>
</Menu.ItemTemplate>
</Menu>
以下是一个示例:
XAML:
没有调用我的单击。
<Menu ItemsSource="{Binding Connections}">
<Menu.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding}" Click="ConnectionsMenuItem_Clicked">
</MenuItem>
</DataTemplate>
</Menu.ItemTemplate>
</Menu>
<Menu Height="23" HorizontalAlignment="Left" Name="menu1" VerticalAlignment="Top" Width="200" />
public MainWindow() {
InitializeComponent();
MenuItem item = new MenuItem { Header = "test" };
item.Click += new RoutedEventHandler(item_Click);
menu1.Items.Add(item);
}
public void item_Click(Object sender, RoutedEventArgs e) {
MessageBox.Show("Hello!");
}
foreach(string menuCaption from ...)
{
MenuItem mi=new MenuItem();
mi.Header = meniCaption;
mi.Click += (s,e) =>
{
...
}
}