Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF样式可以';不能在多个控件上工作_C#_Wpf_Xaml_Styles_App.xaml - Fatal编程技术网

C# WPF样式可以';不能在多个控件上工作

C# WPF样式可以';不能在多个控件上工作,c#,wpf,xaml,styles,app.xaml,C#,Wpf,Xaml,Styles,App.xaml,我在控件上使用wpf样式,这样我就可以同时在多个控件上使用一种样式。它通常是有效的。例如,我制作了一个saveButtonStyle,并将其应用于应用程序上的每个save按钮。但它在菜单项上不起作用。 我为我的菜单项制作了一个样式,在这些项旁边有一个图标。 这是它的一个屏幕截图。 您可以看到Datagrid有一个ContextMenu,其中有多个菜单项。在这种情况下,请注意设置警报。它有一个图标。此设置报警菜单项也位于此项旁边的另一个菜单datagrid中。当我点击那个 看起来也一样 但问题

我在控件上使用wpf样式,这样我就可以同时在多个控件上使用一种样式。它通常是有效的。例如,我制作了一个saveButtonStyle,并将其应用于应用程序上的每个save按钮。但它在菜单项上不起作用。 我为我的菜单项制作了一个样式,在这些项旁边有一个图标。 这是它的一个屏幕截图。

您可以看到Datagrid有一个ContextMenu,其中有多个菜单项。在这种情况下,请注意设置警报。它有一个图标。此设置报警菜单项也位于此项旁边的另一个菜单datagrid中。当我点击那个 看起来也一样

但问题是,当我右键单击返回到另一个数据网格时,图标不见了,不会再回来。这是屏幕截图

这是我做的款式

  <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
menuiteAlert
只创建一个
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>

style
menuiteAlert
只创建一个
图像的实例,并且只能在一个位置显示它。要克服这一问题,请为该
图像创建单独的非共享资源

<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>


我甚至尝试使用DynamicSource应用样式。它不起作用我甚至尝试了DynamicSource来应用样式。这不管用哇,这是快速和正确的。谢谢现在说得通了。哇,这很快就正确了。谢谢现在有道理了。