XAML:如何使用Resources节点中声明的<img/>类型资源?

时间:2017-03-09 20:32:04

标签: c# wpf xaml

这是我第一次在XAML中使用图像作为资源。我已通过以下方式在Image节点内声明了Window.Resources类型的资源:

<Window.Resources>
    <Image x:Key="MyIcon" Source="pack://application:,,,/Resources/Images/myicon.png"/>
</Window.Resources>

如何在XAML代码的其他部分使用此资源?

必须是微不足道的,但我没有找到有关如何使用Image类型资源的任何信息。

显然,将资源用作Source控件的Image属性不起作用:

        <WrapPanel Background="Transparent" Height="50">
            <Image Source="{StaticResource MyIcon}"/>
        </WrapPanel>

上面的代码在设置Source属性时抛出异常,并使用以下InnerException

{"'System.Windows.Controls.Image' is not a valid value for property 'Source'."}

2 个答案:

答案 0 :(得分:4)

使用BitmapImage代替Image作为资源类型:

<Window.Resources>
    <BitmapImage x:Key="MyIcon"
                 UriSource="pack://application:,,,/Resources/Images/myicon.png"/>
</Window.Resources>
...
<WrapPanel Height="50">
    <Image Source="{StaticResource MyIcon}"/>
</WrapPanel>

您也不必在XAML中编写完整的资源文件包URI,因此您可以像这样编写资源声明:

<BitmapImage x:Key="MyIcon" UriSource="/Resources/Images/myicon.png"/>

答案 1 :(得分:1)

您可以在ContentControl中使用WrapPanel并重复使用之前声明的Image资源:

<WrapPanel Background="Transparent" Height="50">
    <ContentControl Content="{StaticResource MyIcon}" />
</WrapPanel>