我很难将其付诸实践,而且我无可救药地与所有需要使用的模板混淆。这是情况。
我想动态创建一个菜单。代码获取对象列表,组列表,然后设置菜单的itemsource。
navBarControl.NavBarMain.ItemsSource = newActions.GroupBy(Function(p) p.GroupName)
我需要XAML中的模板和数据绑定方面的帮助。我希望发生的是创建一个菜单,其中顶部项目是组密钥,然后每个密钥的子项是项目本身。
然后我需要为每个孩子设置一个点击处理程序,以便我可以在单击菜单项上执行代码。
事实证明,这对我来说很难实现。有人可以提供一个XAML示例,说明这将如何工作吗?
答案 0 :(得分:2)
<!-- Common handler for ALL menu items. This was a tough one to figure out since I kept thinking this had to be done the template somehow -->
<Menu MenuItem.Click="navView_Click" >
<Menu.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding}">
<!-- Content presenter for the list of IGrouping objects. Binding is done to the Key property on the IGrouping class -->
<ContentPresenter Content="{Binding Path=Key}"></ContentPresenter>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<!-- Content presenter for the list of objects in each grouping. Binding is done to the Name property on the custom class -->
<ContentPresenter Content="{Binding Path=Name}"></ContentPresenter>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</Menu.ItemTemplate>
</Menu>
这是在代码中设置的itemsource。分别是C#和VB
navBarControl.NavBarMain.ItemsSource = newActions.GroupBy(Function(p) p.GroupName)
navBarControl.NavBarMain.ItemsSource = newActions.GroupBy( p => p.GroupName);