菜单项的图标在WPF菜单消失
问题描述:
我有这样的XAML从我的视图模型渲染菜单:菜单项的图标在WPF菜单消失
<DockPanel>
<Menu DockPanel.Dock="Top" ItemsSource="{Binding MenuItems}">
<Menu.Resources>
<SolidColorBrush x:Key="ImageBrush" Color="Blue"/>
<HierarchicalDataTemplate DataType="{x:Type local:MenuItemViewModel}" ItemsSource="{Binding Path=ChildMenuItems}">
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Command" Value="{Binding Command}" />
<Setter Property="Icon">
<Setter.Value>
<Image Source="{Binding Path=Icon, Converter={fa:ImageSourceConverter}, ConverterParameter={StaticResource ImageBrush}}" />
</Setter.Value>
</Setter>
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
<StackPanel Orientation="Horizontal">
<Label Content="{Binding Header}" />
</StackPanel>
</HierarchicalDataTemplate>
</Menu.Resources>
</Menu>
</DockPanel>
所有作品,除了图标第一个菜单打开后消失的罚款。假设我有两个菜单,每个菜单都有一个子菜单,我打开菜单'A',子菜单显示图标。然后我打开菜单'B',子菜单显示图标。然后再次打开菜单'A',子菜单不显示图标。菜单'B'中只有子菜单显示它的图标。
答
Image
是一个Control
它只能有一个父母,所以你会看到这种行为。创建资源并设置Image
控制与x:Shared
XAML属性的非共享:
<Menu DockPanel.Dock="Top" ItemsSource="{Binding MenuItems}">
<Menu.Resources>
<SolidColorBrush x:Key="ImageBrush" Color="Blue"/>
<Image x:Key="menuIcon" x:Shared="false" Source="{Binding Path=Icon, Converter={fa:ImageSourceConverter}, ConverterParameter={StaticResource ImageBrush}}" />
<HierarchicalDataTemplate DataType="{x:Type local:MenuItemViewModel}" ItemsSource="{Binding Path=ChildMenuItems}">
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Command" Value="{Binding Command}" />
<Setter Property="Icon" Value="{StaticResource menuIcon}" />
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
<StackPanel Orientation="Horizontal">
<Label Content="{Binding Header}" />
</StackPanel>
</HierarchicalDataTemplate>
</Menu.Resources>
</Menu>
检查我的样本here
陈:谢谢你,问题解决了! – Andreas
@Andreas欢迎:) –