Image.ImageOpened 事件
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
在未失败的情况下下载和解码映像源时发生。 可以使用此事件来确定图像源的自然大小。
// Register
event_token ImageOpened(RoutedEventHandler const& handler) const;
// Revoke with event_token
void ImageOpened(event_token const* cookie) const;
// Revoke with event_revoker
Image::ImageOpened_revoker ImageOpened(auto_revoke_t, RoutedEventHandler const& handler) const;
public event RoutedEventHandler ImageOpened;
function onImageOpened(eventArgs) { /* Your code */ }
image.addEventListener("imageopened", onImageOpened);
image.removeEventListener("imageopened", onImageOpened);
- or -
image.onimageopened = onImageOpened;
Public Custom Event ImageOpened As RoutedEventHandler
<Image ImageOpened="eventhandler"/>
事件类型
注解
当 ImageOpened 触发时,它将作为通知,指示所有异步操作都已完成,并且用作图像源的对象的所有属性都可供使用。 例如,若要确定图像的大小,请处理 ImageOpened,并检查作为 Image.Source 引用的对象上的 PixelWidth 和 PixelHeight 属性的值。 ImageOpened 事件的事件数据通常没有用。
当 Image 元素不在实时可视化树中时,Image 元素不会触发 ImageOpened 或 ImageFailed 事件。 如果需要在元素不在活动树中时接收这些事件,请使用 BitmapImage。ImageOpened/ImageFailed 事件。
Windows 8 行为
对于 Windows 8,资源可以使用资源限定符模式来加载不同的资源,具体取决于特定于设备的缩放。 但是,如果在应用运行时缩放因子发生更改,则不会自动重新加载资源。 在这种情况下,应用必须处理重载资源,方法是处理 dpiChanged 事件 (或已弃用的 LogicalDpiChanged 事件) ,并使用 ResourceManager API 手动重新加载适合新缩放因子的资源。 从 Windows 8.1 开始,如果在应用运行时缩放因子发生更改,则会自动重新评估最初为应用检索的任何资源。 此外,当该资源是 Image 对象的图像源时,系统会请求新资源,然后将其应用到 Image,从而触发 imageOpened 或 ImageFailed) (源加载事件之一。 可能发生运行时缩放更改的情况是,当用户将应用移动到其他监视器时,有多个监视器可用。
如果将应用代码从 Windows 8 迁移到 Windows 8.1则可能需要考虑此行为更改,因为它会导致在处理缩放更改时在运行时发生的 ImageOpened 或 ImageFailed 事件,即使在 Xaml 中设置了 Source 的情况下也是如此。 此外,如果确实有处理 DpiChanged/LogicalDpiChanged 并重置资源的代码,则应检查在新的Windows 8.1自动重载行为下是否仍需要该代码。
对于针对 Windows 8 编译的应用,如果它在 Windows 8.1 上运行,将继续使用 Windows 8 行为。