C# 自定义菜单内容
我正在尝试构建自定义菜单(意味着我要为菜单项设置模板)C# 自定义菜单内容,c#,wpf,xaml,C#,Wpf,Xaml,我正在尝试构建自定义菜单(意味着我要为菜单项设置模板) 以及视图模型 public class MainViewModel : ViewModelBase { public ObservableCollection<MenuItemViewModel> MenuItems { get; set; } public MainViewModel() { MenuItems = new Observabl
以及视图模型
public class MainViewModel : ViewModelBase
{
public ObservableCollection<MenuItemViewModel> MenuItems { get; set; }
public MainViewModel()
{
MenuItems = new ObservableCollection<MenuItemViewModel>
{
new MenuItemViewModel("File")
{
MenuItems = new ObservableCollection<MenuItemViewModel>
{
new MenuItemViewModel("New"),
new MenuItemViewModel("Open"),
new MenuItemViewModel("Close"),
}
},
new MenuItemViewModel("Edit")
{
MenuItems = new ObservableCollection<MenuItemViewModel>
{
new MenuItemViewModel("Cut"),
new MenuItemViewModel("Copy"),
new MenuItemViewModel("Paste"),
}
},
};
}
}
public类MainViewModel:ViewModelBase
{
公共ObservableCollection菜单项{get;set;}
公共主视图模型()
{
MenuItems=新的可观察集合
{
新MenuItemViewModel(“文件”)
{
MenuItems=新的可观察集合
{
新MenuItemViewModel(“新”),
新MenuItemViewModel(“打开”),
新MenuItemViewModel(“关闭”),
}
},
新MenuItemViewModel(“编辑”)
{
MenuItems=新的可观察集合
{
新MenuItemViewModel(“Cut”),
新MenuItemViewModel(“副本”),
新MenuItemViewModel(“粘贴”),
}
},
};
}
}
问题是我看到了第一个层次——“文件”和“编辑”
但不是他们的孩子
在史努比我可以看到他们有孩子
如果我删除这行:
<Setter Property="Template" Value="{StaticResource MenuItemControlTemplate1}" />
它也像预期的那样工作。。。
问题是我确实需要为菜单项设置模板…您的自定义模板中没有显示子项的内容。每当您想要创建一个自定义控件模板时,您都应该查找第一个模板,以确保没有遗漏任何重要内容 在中,您会注意到它包含以下内容:
<StackPanel
IsItemsHost="True"
KeyboardNavigation.DirectionalNavigation="Cycle" />
任何项控件
(MenuItem扩展)都需要面板
元素作为其项列表
。因此,将此元素添加到模板中的某个位置
如果所有其他操作都失败,请尝试按原样使用示例模板。然后,您可以使用它来更好地理解它。IsItemsHost确实显示了其他项目,但没有显示在适当的位置。。。如何使用模板?它们对于每个层次结构都是分开的,您可以粘贴使用它的示例吗?由于模板已经包含IsItemsHost=True,我尝试将它们复制粘贴到我的代码中,并使用MenuItem样式,如下所示:但仍然相同。。。
<StackPanel
IsItemsHost="True"
KeyboardNavigation.DirectionalNavigation="Cycle" />