我是 WPF 和 MVVM 的新手。我已经寻找了一种在 MVVM 部分中动态创建菜单的好方法,但我没有找到任何我喜欢的东西,所以我推出了自己的解决方案。它可以工作,但由于某种原因,菜单的前景(文本)颜色有时(只是有时)不正确。
我为下面的图片添加了一个链接。
http://img220.imageshack.us/img220/1912/badmenu.jpg(死链接)
我的最低子菜单以白色前景正确显示,但其父菜单前景变为黑色,几乎无法阅读。如果我对菜单进行了硬编码,那么父级的前景色将为白色。如果我将鼠标移到父级上,它的文本将切换回白色,子菜单将变为黑色。
此外,一旦我将鼠标从父级移开,它的所有布尔属性都IsHighlighted, IsSubmenuOpen, etc...
变为错误,这让我感到惊讶,因为我认为它们应该保持真实。最终结果是我无法用样式触发器解决这个问题。
这是我的 XAML 。
<Window.Resources>
<DataTemplate DataType="{x:Type src:ParentMenu}" >
<Menu >
<MenuItem Header="{Binding MenuName}" ItemsSource="{Binding ChildMenuItems}" />
</Menu>
</DataTemplate>
<HierarchicalDataTemplate DataType="{x:Type src:ChildMenu}"
ItemsSource="{Binding ChildMenuItems}" >
<MenuItem Header="{Binding MenuName}" Command="{Binding Path=Command}" />
</HierarchicalDataTemplate>
' StackOverflow 为 Window.Resources 屏蔽了我的结束标记
<DockPanel>
<Menu DockPanel.Dock="Top" ItemsSource="{Binding Menus}" />
<Grid>
<!-- Add additional content here -->
</Grid>
</DockPanel>
两者都ParentMenu
继承自一个公共类,该类实际上包含所有菜单并通过集合ChildMenu
公开子菜单。是一个对象列表。我公开了一个对象列表。ChildMenuItems
ChildMenuItems
ChildMenu
ViewModels
ParentMenu
可能有更好的方法可以在这里完成我想要的。这是一个例子:
img132.imageshack.us/img132/4160/bettermenu.jpg(死链接)
关于我做错了什么和/或如何解决显示问题的任何建议?