class MenuData{
public string Header {get; protected set;}
public ObservableCollection<MenuData> Items { get; protected set; }
}
ObservableCollection<MenuData> Menus {get; protected set;}
我想将Menus属性绑定为Menu元素ItemsSource。结果应该看起来像标准的Windows菜单栏:第一级的项目将与隐藏的子项目水平排列为子菜单。
我尝试使用XAML创建第一个级别(水平菜单栏):
<my:MenuElement ItemsSource="{Binding Menus}">
<my:MenuElement.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding Header}">
<!-- Try to add some sub-menus to see what it is going to look like. -->
<MenuItem Header="A" />
<MenuItem Header="A" />
<MenuItem Header="A" />
<MenuItem Header="A" />
</MenuItem>
</DataTemplate>
</my:MenuElement.ItemTemplate>
</my:MenuElement>
class MenuElement: System.Windows.Controls.Menu
{
protected override DependencyObject GetContainerForItemOverride()
{
return new System.Windows.Controls.ContentPresenter();
}
}
但是结果看起来完全错误(注意高亮显示太大和子菜单箭头)
谢谢你的帮助。