3

我正在开发一个 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);
}

感谢您的任何帮助,您可以提供。

4

3 回答 3

6

这是一个例子:

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!");
}
于 2013-04-06T13:32:55.503 回答
1

应该有一个MenuItem控件可以实例化并connection用作它的Headeror Content

MenuItem然后将有一个Click针对它的事件处理程序,或者您可以设置命令。

但是,理想情况下,您应该检索connections集合,将其设置为您的属性model,然后menu绑定到该集合,这样只需使用ItemTemplate菜单即可。

例如

        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);
        }

或绑定:

    <Menu ItemsSource="{Binding Connections}">
        <Menu.ItemTemplate>
            <DataTemplate>
                <MenuItem Header="{Binding}" Click="ConnectionsMenuItem_Clicked">

                </MenuItem>
            </DataTemplate>
        </Menu.ItemTemplate>
    </Menu>
于 2013-04-06T13:26:55.523 回答
0
foreach(string menuCaption from ...)
{
    MenuItem mi=new MenuItem();
    mi.Header = meniCaption;
    mi.Click += (s,e) =>
        {
             ...
        }
}
于 2013-04-06T13:34:09.993 回答