Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将单击事件添加到按程序添加的菜单项_C#_Wpf_Menu_Menuitem - Fatal编程技术网

C# 将单击事件添加到按程序添加的菜单项

C# 将单击事件添加到按程序添加的菜单项,c#,wpf,menu,menuitem,C#,Wpf,Menu,Menuitem,我正在处理一个C#WPF项目,我正在将一些项目存储在SQLite数据库中,当程序加载时,它会从数据库中检索项目并将项目添加到菜单中。然后,我需要做的是允许用户单击其中一个添加的菜单项,并根据单击的内容完成一些操作。我找不到任何关于如何执行此操作的信息,下面是我如何通过编程将菜单项添加到菜单的代码 StoredDBConnectionManager storedDbConnectionManager = new StoredDBConnectionManager(Properties.Settin

我正在处理一个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);
}
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) =>
        {
             ...
        }
}