菜单打开时,XAML ResourceDictionary中的图像在ToolBar上消失

use*_*116 9 wpf resourcedictionary

我已经开始将各种常见的Images 移动到一个ResourceDictionary并注意到我的WPF应用程序中有一个奇怪的行为.如果Image在a MenuItem和a Button中使用ToolBar,当我打开时Menu,图像消失在Button.

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Image x:Key="NewImage"
           Source="/SomeApplication;component/Resources/NewDocumentHS.png"
           Stretch="None"/>
    <!-- ... -->
Run Code Online (Sandbox Code Playgroud)

来自的相关XAML Window:

<Menu>
    <MenuItem Header="_File">
        <MenuItem Header="_New"
                  Command="{Binding NewCommand}"
                  Icon="{DynamicResource NewImage}" />
<!-- ... -->
<ToolBarTray>
    <ToolBar>
        <Button Command="{Binding NewCommand}"
                Content="{DynamicResource NewImage}" />
Run Code Online (Sandbox Code Playgroud)

我认为这是一个资源的警告ResourceDictionary,但我无法找到适当的解决方案.行为发生在StaticResourceDynamicResource.它似乎也不受影响,如果ResourceDictionary它自己的立场或它是否与其他人合并.没有其他资源可以共享密钥.

编辑:此外,添加PresentationOptions:Freeze="True"到图像并没有改变这种情况.

Cod*_*ked 8

Image类是可视化的,因此它只能在一个位置的可视树中出现.因此,您无法在多个MenuItems/Buttons/etc之间共享它.

但是,您可以共享ImageSource(即Image.Source)值.

在WPF中,我相信您可以使用x:Shared ="False"来强制WPF为每个请求创建一个新实例.