1234567891011121314151617181920212223242526272829303132333435363738394041 |
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Media;
- namespace HandyControl.Controls;
- public class ImageAttach
- {
- public static readonly DependencyProperty SourceFailedProperty = DependencyProperty.RegisterAttached(
- "SourceFailed", typeof(ImageSource), typeof(ImageAttach), new FrameworkPropertyMetadata(default(ImageSource), FrameworkPropertyMetadataOptions.Inherits, OnSourceFailedChanged));
- private static void OnSourceFailedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
- {
- if (d is Image image)
- {
- if (e.NewValue is ImageSource)
- {
- image.ImageFailed += Image_ImageFailed;
- }
- else
- {
- image.ImageFailed -= Image_ImageFailed;
- }
- }
- }
- private static void Image_ImageFailed(object sender, ExceptionRoutedEventArgs e)
- {
- if (sender is Image image)
- {
- image.SetCurrentValue(Image.SourceProperty, GetSourceFailed(image));
- image.ImageFailed -= Image_ImageFailed;
- }
- }
- public static void SetSourceFailed(DependencyObject element, ImageSource value)
- => element.SetValue(SourceFailedProperty, value);
- public static ImageSource GetSourceFailed(DependencyObject element)
- => (ImageSource) element.GetValue(SourceFailedProperty);
- }
|