ImageBrush.ImageSource 属性

定义

获取或设置此 ImageBrush 显示的图像源。 在使用 ImageSource 子类实例设置此代码的代码中,在 XAML 中,使用图像源文件的 URI 设置此项。

public:
 property ImageSource ^ ImageSource { ImageSource ^ get(); void set(ImageSource ^ value); };
ImageSource ImageSource();

void ImageSource(ImageSource value);
public ImageSource ImageSource { get; set; }
var imageSource = imageBrush.imageSource;
imageBrush.imageSource = imageSource;
Public Property ImageSource As ImageSource
<ImageBrush ImageSource="imageUri"/>

属性值

一个表示图像源的 对象,此 ImageBrush 在应用于内容时由它显示。

注解

从图像源文件或流设置图像源本质上是一种异步操作。 将源设置为统一资源标识符 (URI) 无法解析为有效图像源文件的值不会引发错误。 相反,它会在 ImageBrush 上触发 ImageFailed 事件。 如果要验证图像源文件是否已正确加载,可以处理 ImageOpened 进行验证,以及 ImageFailed 作为提供回退图像源或重构 UI 的一种方法。

在 XAML 中设置 ImageSource

可以在 XAML 中设置此属性,但在这种情况下,将 ImageSource 属性值设置为表示统一资源标识符 (URI) 的字符串。 此行为依赖于将字符串作为统一资源标识符 (URI) 处理的基础类型转换,并调用 BitmapImage (Uri) 构造函数的内部等效项。

如果 XAML 中的初始 ImageSource 属性值未指定有效的源,则可能发生 ImageFailed 事件。 可以使用相对路径来引用与应用一起打包的图像,也可以使用绝对统一资源标识符 (URI) 引用服务器中的图像。 如果使用打包为应用的一部分的图像源,则通常使用 ms-appxms-resource 方案。

在代码中设置 ImageSource

如果使用代码定义 ImageBrush,ImageBrush.ImageSource 需要 BitmapImage (而不是代码中的统一资源标识符 (URI) ) 。 如果源是一个流,请使用 SetSourceAsync 方法来初始化该值。 如果源是统一资源标识符 (URI) 引用文件(其中包含应用中使用 ms-appxms-resource 方案的内容)的 URI,请使用 BitmapImage 构造函数,该构造函数采用统一资源标识符 (URI) 。 如果在检索或解码图像资源时存在任何计时问题,而你可能在图像资源可用前需要使用替代内容用以显示,则还可以考虑处理 ImageOpened 事件。 有关示例代码 ,请参阅 XAML 图像示例

如果需要根据 UI 中的另一个对象编写 URI 以帮助限定资源请求的范围,有时可以使用在 UI 中的另一个对象上调用 的 FrameworkElement.BaseUri 属性。 这提供了一个基本 URI,该 URI 是 XAML 页面在应用的项目结构中的位置。

注意

可以使用自动处理来访问具有当前规模和区域性限定符的不限定资源,也可以使用 ResourceManagerResourceMap 以及区域性和缩放限定符来直接获取资源。 有关详细信息,请参阅资源管理系统

图像源和缩放

应以多种建议大小创建图像源,以确保应用在Windows 8缩放时看起来很棒。 为 ImageBrush 指定 ImageSource 时,可以使用命名约定自动引用当前缩放的正确资源。 有关命名约定规范和详细信息,请参阅快速入门:使用文件或图像资源

有关如何针对缩放进行设计的详细信息,请参阅 布局和缩放的 UX 指南

有关应用资源以及如何在应用中打包图像源的详细信息,请参阅 定义应用资源

以前版本的说明

Windows 8

如果 ImageBrush 是应用于控件的 XAML 样式或模板的一部分,则Windows 8来自 XAML 属性 URI 值的 ImageSource 解析出现问题。 控件用法有时会使用特定于组件的基本 URI,而不是样式或模板的相应基 URI,这通常来自应用。 此问题从Windows 8.1开始已修复;根据需要基本 URI 的范围,正确确定应用资源或组件资源的基本 URI。 为Windows 8编译的应用可能为此行为使用了解决方法,方法是将其图像源文件放在“错误”位置,XAML URI 将解析,应用将显示图像。 如果要将 XAML 从 Windows 8 迁移到Windows 8.1则应从 XAML 以样式或模板测试任何 ImageBrush 用法,并验证应用中的图像分辨率是否适用于Windows 8.1。 如果遇到问题,应在包中移动映像源文件,使其处于新行为的正确资源范围内。

对于针对 Windows 8 编译的应用,如果它在 Windows 8.1 上运行,将继续使用 Windows 8 行为。

适用于

另请参阅