Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.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 - Fatal编程技术网

C# 在代码隐藏中添加子菜单项

C# 在代码隐藏中添加子菜单项,c#,wpf,C#,Wpf,我正在尝试构建一个包含子项的菜单 我有一个公共界面: public interface IBaseItem { string Name { get; set; } } a类: public class ItemsMenu : IBaseItem { publicobservableCollection子项{get;set;} 公共字符串名称{get;set;} } 窗口: <Window x:Class="WpfApplication19.MainWind

我正在尝试构建一个包含子项的菜单

我有一个公共界面:

public interface IBaseItem
   {
       string Name { get; set; }
   }
a类:

 public class ItemsMenu : IBaseItem
{

publicobservableCollection子项{get;set;}
公共字符串名称{get;set;}
}

窗口:

<Window x:Class="WpfApplication19.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525"> 

<Grid>    
    <Menu Name="myMenu" DisplayMemberPath="Name"></Menu>
</Grid>

在代码隐藏中:

using System.Collections.ObjectModel;

namespace WpfApplication19
{
   /// <summary>
   /// Interaction logic for MainWindow.xaml
   /// </summary>
   public partial class MainWindow
   {
      public MainWindow()
      {

         var observableCollection = new ObservableCollection<ItemsMenu>();
         var Item1 = new ItemsMenu
                          {
                             Name = "A"
                          };

         var SubItem1 = new ItemsMenu()
                         {
                            Name = "bbbb"
                         };

         var Item2= new ItemsMenu
         {
            Name = "B"
         };

         Item2.SubItems.Add(SubItem1);



         var Item3= new ItemsMenu
         {
            Name = "C"
         };

         observableCollection.Add(Item1);
         observableCollection.Add(Item2);
         observableCollection.Add(Item3);

         InitializeComponent();
         myMenu.ItemsSource = observableCollection;

      }


   }
}
使用System.Collections.ObjectModel;
命名空间WpfApplication19
{
/// 
///MainWindow.xaml的交互逻辑
/// 
公共部分类主窗口
{
公共主窗口()
{
var observableCollection=新的observableCollection();
var Item1=new ItemsMenu
{
Name=“A”
};
var SubItem1=new ItemsMenu()
{
Name=“bbbb”
};
var Item2=new ItemsMenu
{
Name=“B”
};
第2项。子项。添加(子项1);
var Item3=新项目菜单
{
Name=“C”
};
增加(第1项);
增加(第2项);
增加(第3项);
初始化组件();
myMenu.ItemsSource=可观察的收集;
}
}
}
但在线
SubItem2.SubItems.Add(SubItem1)我得到这个错误:

调用的目标已引发异常。 对象引用未设置为对象的实例


我哪里做错了有什么提示吗

在使用子项之前初始化它

 SubItem2.SubItems = new ObservableCollection<IBaseItem>();
 SubItem2.SubItems = new ObservableCollection<IBaseItem>();
 public class ItemsMenu : IBaseItem
 {
     public ItemsMenu()
     {
          SubItems = new ObservableCollection<IBaseItem>();
     }
     public ObservableCollection<IBaseItem> SubItems { get; set; }
     public string Name { get; set; }
 }