【问题标题】:Resource can only be used once? [duplicate]资源只能使用一次? [复制]
【发布时间】:2017-08-08 10:53:20
【问题描述】:

在设计应用程序的 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" />

但如果我添加指向同一图像的“icon_edit2”,它就可以工作。

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

为什么我不能两次使用同一个资源键?

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-18
      • 2019-11-21
      • 1970-01-01
      • 1970-01-01
      • 2015-11-02
      • 2015-04-19
      • 2020-04-04
      相关资源
      最近更新 更多