Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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
用WPF在C#中创建动态菜单_C#_Wpf_Mvvm - Fatal编程技术网

用WPF在C#中创建动态菜单

用WPF在C#中创建动态菜单,c#,wpf,mvvm,C#,Wpf,Mvvm,我想知道这样的事情是否可以做到- 我有一个名为“公文包”的菜单项,其中有两个子菜单项“加载公文包”和“查看公文包”。当您单击“加载公文包”时,它将提示打开一个包含公文包名称的文件,然后我希望“查看公文包”将这些名称添加为子菜单项,类似这样-> Portfolios: Load Portfolios View Portfolios: Portfolio1 Portfolio2 Portfolio3 老实说,我不

我想知道这样的事情是否可以做到-

我有一个名为“公文包”的菜单项,其中有两个子菜单项“加载公文包”和“查看公文包”。当您单击“加载公文包”时,它将提示打开一个包含公文包名称的文件,然后我希望“查看公文包”将这些名称添加为子菜单项,类似这样->

Portfolios:
   Load Portfolios
       View Portfolios:
           Portfolio1
           Portfolio2
           Portfolio3
老实说,我不知道该怎么做,而且我还没有遇到任何教程可以提供帮助,所以非常感谢您的帮助!:)

这很简单:

// Create MenuItem
MenuItem mnuFile = new MenuItem();
mnuFile.Name = "mnuFile"; // The x:Name
mnuFile.Header = "_File";

// Add to mnuMain's Items
mnuMain.Items.Add(mnuFile);

你的问题有点宽泛,所以我将总结你需要做的事情:

  • 遵循MVVM模式
  • 在“主”视图模型中,创建一个名为子菜单项的
    ObservableCollection
  • 在您的视图(XAML)中,从以下内容开始并在此基础上构建:

    <Menu>
        <MenuItem Header="Main Menu" ItemsSource="{Binding SubMenuItems}" />
    </Menu>
    
    
    


是的,我真的想出来了,原来我想使用ItemsSource将MenuItem绑定到一个可观察的集合,无论如何,谢谢:)-1.在代码中实例化或引用UI元素是一种糟糕的做法,不利于可伸缩性,并在c#代码和UIElements之间产生不必要的紧密耦合,而这些耦合应该在XAML中定义。