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