<HierarchicalDataTemplate ItemsSource="{Binding ChildrenList}" DataType="{x:Type wpfApplication2:SysMenuItem}" >
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Command"
Value="{Binding DataContext.SysMenuCommand, ElementName=TestMainWindow}" />
<Setter Property="CommandParameter" Value="{Binding}"></Setter>
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Title}" />
</StackPanel>
<!--使用EventTrigger缺点:1. 点击菜单空白处不能触发事件
2. 有子菜单的不用触发命令,得在命令中判断。
3. 使用菜单触发AvalonDock控件动态添加tab,如果拖动一些tab后,点击菜单active存在的tab时,会有莫名Bug(某一区域tabs不能active,重是调回到一个特定的tab)-->
<!--<TextBlock Text="{Binding Title}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<i:InvokeCommandAction Command="{Binding DataContext.SysMenuCommand, ElementName=TestMainWindow}" CommandParameter="{Binding}">
</i:InvokeCommandAction>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBlock>-->
</HierarchicalDataTemplate>
本文探讨了在WPF应用中使用HierarchicalDataTemplate进行菜单设计的优化策略,包括ItemContainerStyle的定制、事件触发机制的改进以及解决菜单与AvalonDock控件互动时的Bug。
3174

被折叠的 条评论
为什么被折叠?



