在设计我的应用程序的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" />
但如果我添加&#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" />
为什么我不能两次使用相同的资源密钥?
答案 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>