我正在开发一个C#WPF项目,我正在SQLite数据库中存储一些项目,当程序加载时,它会从数据库中检索项目并将项目添加到菜单中。然后我需要做的是允许用户点击其中一个添加的菜单项,并根据点击的内容完成某些操作。我找不到任何关于如何执行此操作的内容,下面是我如何以编程方式将菜单项添加到菜单的代码。
StoredDBConnectionManager storedDbConnectionManager = new StoredDBConnectionManager(Properties.Settings.Default.app_dbPassword);
List<string> connections = storedDbConnectionManager.getStoredConnections();
foreach (string connection in connections)
{
mnuFileDBConnections.Items.Add(connection);
}
感谢您提供的任何帮助。
答案 0 :(得分:5)
以下是一个例子:
XAML:
<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!");
}
答案 1 :(得分:1)
应该有一个MenuItem
控件可以实例化并使用connection
作为Header
或Content
。
MenuItem
会有一个Click
事件处理程序,或者你可以设置命令。
但理想情况下,您应该检索connections
集合,将其设置为model
上的属性,然后将menu
绑定到该集合,这样就简单了使用ItemTemplate
作为菜单。
e.g。
StoredDBConnectionManager storedDbConnectionManager = new StoredDBConnectionManager(Properties.Settings.Default.app_dbPassword);
List<string> connections = storedDbConnectionManager.getStoredConnections();
foreach (string connection in connections)
{
var mi = new MenuItem()
{
Header = connection,
};
mi.Click += ConnectionMenuItemClicked;
mnuFileDBConnections.Items.Add(mi);
}
OR与绑定:
<Menu ItemsSource="{Binding Connections}">
<Menu.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding}" Click="ConnectionsMenuItem_Clicked">
</MenuItem>
</DataTemplate>
</Menu.ItemTemplate>
</Menu>
答案 2 :(得分:0)
foreach(string menuCaption from ...)
{
MenuItem mi=new MenuItem();
mi.Header = meniCaption;
mi.Click += (s,e) =>
{
...
}
}