Jos*_*ose 4 xaml datatemplate mvvm
我无法编写xaml表示以允许绑定到我的后台ViewModel以进行级联菜单
这是VM:
public class MenuNode
{
public string Header {get;}
public List<MenuNode> Items {get;}
}
Run Code Online (Sandbox Code Playgroud)
我有的xaml是这样的:
<ContextMenu ItemsSource="{Binding Choices}" >
<ContextMenu.Resources>
<DataTemplate DataType="{x:Type vmi:MenuNode}">
<MenuItem Header="{Binding Header}" ItemsSource="{Binding Items}"/>
</DataTemplate>
</ContextMenu.Resources>
</ContextMenu>
Run Code Online (Sandbox Code Playgroud)
当菜单弹出时,我得到带箭头的第一级条目(表示应该有一个子菜单),但当我将鼠标悬停在菜单上时,它不会显示子菜单项.
有任何想法吗?
好的,这是问题所在:
由于某种原因,MenuItems你生成的DataTemplate是被包裹在另一个内部MenuItem(结果是嵌套的MenuItems).子项目没有被打开,因为外面MenuItem没有孩子.
解决方案是使用a HierarchicalDataTemplate代替:
<ContextMenu ItemsSource="{Binding Choices}" >
<ContextMenu.Resources>
<HierarchicalDataTemplate DataType="{x:Type vmi:MenuNode}" ItemsSource="{Binding Items}">
<TextBlock Text="{Binding Header}"/>
</HierarchicalDataTemplate>
</ContextMenu.Resources>
</ContextMenu>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4711 次 |
| 最近记录: |