WPF 样式不能在多个控件上工作
WPF Style can't work on multiple controls
我在我的控件上使用 wpf 样式,这样我就可以同时在多个控件上使用一个样式。它通常有效。例如,我制作了一个 saveButtonStyle 并将其应用到我应用程序的每个保存按钮上。但它不适用于 MenuItems。
我为我的菜单项制作了一个样式,其中在项目旁边包含一个图标。
这是它的一个屏幕截图。
您看到 Datagrid 有一个 ContextMenu,其中有多个菜单项。在这种情况下,请注意设置警报。它有一个图标。这个设置警报菜单项也在这个旁边的另一个菜单数据网格中。当我点击那个
它也出现了
但问题是当我右键单击回到另一个数据网格时,图标消失了,不会再回来了。这是屏幕截图
这是我做的款式
<Style x:Key="menuItemAlert" TargetType="{x:Type MenuItem}">
<Setter Property="Icon">
<Setter.Value>
<Image Source="Content/AlertIcon.png" Width="20" Height="20" />
</Setter.Value>
</Setter>
</Style>
下面是我如何将它应用到我的控件中
<MenuItem x:Name="customerContextMenuSetAlarm" Header="SetAlarm" Style="{StaticResource menuItemAlert}" Click="customerContextMenuSetAlarm_Click"/>
你知道为什么会这样吗?
style menuItemAlert
只创建一个 Image
的实例,并且只能在一个地方显示它。为了克服这个问题,为 Image
.
创建一个单独的非共享资源
<Image x:Key="AlertIcon" x:Shared="False" Source="Content/AlertIcon.png" Width="20" Height="20" />
<Style x:Key="menuItemAlert" TargetType="{x:Type MenuItem}">
<Setter Property="Icon" Value="{StaticResource AlertIcon}"/>
</Style>
我在我的控件上使用 wpf 样式,这样我就可以同时在多个控件上使用一个样式。它通常有效。例如,我制作了一个 saveButtonStyle 并将其应用到我应用程序的每个保存按钮上。但它不适用于 MenuItems。
我为我的菜单项制作了一个样式,其中在项目旁边包含一个图标。
这是它的一个屏幕截图。
您看到 Datagrid 有一个 ContextMenu,其中有多个菜单项。在这种情况下,请注意设置警报。它有一个图标。这个设置警报菜单项也在这个旁边的另一个菜单数据网格中。当我点击那个
它也出现了
但问题是当我右键单击回到另一个数据网格时,图标消失了,不会再回来了。这是屏幕截图
这是我做的款式
<Style x:Key="menuItemAlert" TargetType="{x:Type MenuItem}">
<Setter Property="Icon">
<Setter.Value>
<Image Source="Content/AlertIcon.png" Width="20" Height="20" />
</Setter.Value>
</Setter>
</Style>
下面是我如何将它应用到我的控件中
<MenuItem x:Name="customerContextMenuSetAlarm" Header="SetAlarm" Style="{StaticResource menuItemAlert}" Click="customerContextMenuSetAlarm_Click"/>
你知道为什么会这样吗?
style menuItemAlert
只创建一个 Image
的实例,并且只能在一个地方显示它。为了克服这个问题,为 Image
.
<Image x:Key="AlertIcon" x:Shared="False" Source="Content/AlertIcon.png" Width="20" Height="20" />
<Style x:Key="menuItemAlert" TargetType="{x:Type MenuItem}">
<Setter Property="Icon" Value="{StaticResource AlertIcon}"/>
</Style>