这是我第一次在XAML中使用图像作为资源。我已通过以下方式在Image
节点内声明了Window.Resources
类型的资源:
<Window.Resources>
<Image x:Key="MyIcon" Source="pack://application:,,,/Resources/Images/myicon.png"/>
</Window.Resources>
必须是微不足道的,但我没有找到有关如何使用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'."}
答案 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>