WPF菜单中的菜单项图标消失
我使用此XAML从视图模型渲染菜单:WPF菜单中的菜单项图标消失,wpf,Wpf,我使用此XAML从视图模型渲染菜单: <DockPanel> <Menu DockPanel.Dock="Top" ItemsSource="{Binding MenuItems}"> <Menu.Resources> <SolidColorBrush x:Key="ImageBrush" Color="Blue"/> <HierarchicalDataTemplate
<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”中的唯一子菜单显示其图标。
图像
是一个只能有一个父控件的控件,因此您将看到此行为。在资源中创建图像控件,并使用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>
检查我的样品