资源只能使用一次?

时间:2017-08-08 01:17:58

标签: c# wpf

在设计我的应用程序的UI时,我遇到了一个有趣的问题......我有一个按钮,其中包含从资源加载的图像。我复制并粘贴了按钮,设计师看起来一切都很好,但是当我运行应用程序时,只有第二个按钮有图像。

<Window.Resources>
<Image x:Key="icon_edit" Source="pack://application:,,,/Resources/edit.png"/>
</Window.Resources>

...

<Button Content="{StaticResource icon_edit}" Style="{StaticResource NavButton}" x:Name="btnNavEdit" />
<Button Content="{StaticResource icon_edit}" Style="{StaticResource NavButton}" x:Name="btnNavShow" />

enter image description here

但如果我添加&#39; icon_edit2&#39;指着它工作的相同图像。

<Window.Resources>
<Image x:Key="icon_edit" Source="pack://application:,,,/Resources/edit.png"/>
<Image x:Key="icon_edit2" Source="pack://application:,,,/Resources/edit.png"/>
</Window.Resources>

...

<Button Content="{StaticResource icon_edit}" Style="{StaticResource NavButton}" x:Name="btnNavEdit" />
<Button Content="{StaticResource icon_edit2}" Style="{StaticResource NavButton}" x:Name="btnNavShow" />

enter image description here

为什么我不能两次使用相同的资源密钥?

1 个答案:

答案 0 :(得分:0)

图像只出现一次的原因是图像是框架元素,框架元素只能有一个父元素。因此,您的代码首先将图像置于第一个按钮,然后将其删除并将其置于显示它的第二个按钮。要解决此问题,请使用不是框架元素的资源。例如,这是您实现目标的一种方式:

<Window.Resources>
    <BitmapImage UriSource="pack://application:,,,/Resources/edit.png"  x:Key="icon_edit"/>
</Window.Resources>

...

    <Button>
        <Image Source="{StaticResource icon_edit}"/>
    </Button>
    <Button>
        <Image Source="{StaticResource icon_edit}"/>
    </Button>