@@ -23,19 +23,22 @@ protected PromotionImageButton() : base(new())
2323 {
2424 ( ~ this ) . Width = 320 * 0.95 ;
2525 ( ~ this ) . Height = 50 * 0.95 ;
26- ( ~ this ) . Visibility = Visibility . Collapsed ;
2726
2827 ( ~ this ) . Tag = NavigateUri ;
29- ( ~ this ) . ImageFailed += OnImageFailed ;
28+ ( ~ this ) . Visibility = Visibility . Collapsed ;
29+
30+ ( ~ this ) . Source = new BitmapImage
31+ {
32+ DecodePixelWidth = ( int ) ( ~ this ) . Width ,
33+ DecodePixelHeight = ( int ) ( ~ this ) . Height ,
34+ DecodePixelType = DecodePixelType . Logical ,
35+ UriSource = ImageUri is { } ? new ( ImageUri ) : null ,
36+ } ;
37+
38+ ( ~ this ) . ImageOpened += OnImageOpened ;
3039 ( ~ this ) . PointerExited += OnImagePointerExited ;
3140 ( ~ this ) . PointerEntered += OnImagePointerEntered ;
3241 ( ~ this ) . PointerPressed += OnImagePointerPressed ;
33-
34- if ( ImageUri is { } )
35- {
36- ( ~ this ) . Visibility = Visibility . Visible ;
37- ( ~ this ) . Source = new BitmapImage { UriSource = new ( ImageUri ) } ;
38- }
3942 }
4043
4144 unsafe static void OnImagePointerPressed ( object sender , RoutedEventArgs args )
@@ -44,7 +47,7 @@ unsafe static void OnImagePointerPressed(object sender, RoutedEventArgs args)
4447 ShellExecute ( Null , null , lpFile , null , null , SW_NORMAL ) ;
4548 }
4649
47- static void OnImageFailed ( object sender , RoutedEventArgs args ) => ( ( Image ) sender ) . Visibility = Visibility . Collapsed ;
50+ static void OnImageOpened ( object sender , RoutedEventArgs args ) => ( ( Image ) sender ) . Visibility = Visibility . Visible ;
4851 static void OnImagePointerEntered ( object sender , RoutedEventArgs args ) => CoreWindow . GetForCurrentThread ( ) . PointerCursor = _hand ;
4952 static void OnImagePointerExited ( object sender , RoutedEventArgs args ) => CoreWindow . GetForCurrentThread ( ) . PointerCursor = _arrow ;
5053}
0 commit comments