@@ -88,8 +88,11 @@ public enum eSizeType
8888 typeof ( double ? ) , typeof ( SVGImage ) , new FrameworkPropertyMetadata ( default ,
8989 FrameworkPropertyMetadataOptions . AffectsRender , OverrideStrokeWidthPropertyChanged ) ) ;
9090
91- public static readonly DependencyProperty OverrideColorProperty = DependencyProperty . Register ( "OverrideColor" ,
92- typeof ( Color ? ) , typeof ( SVGImage ) , new PropertyMetadata ( null ) ) ;
91+ public static readonly DependencyProperty OverrideColorProperty =
92+ DependencyProperty . Register ( "OverrideColor" ,
93+ typeof ( Color ? ) ,
94+ typeof ( SVGImage ) ,
95+ new FrameworkPropertyMetadata ( default , FrameworkPropertyMetadataOptions . AffectsRender , OverrideColorPropertyChanged ) ) ;
9396
9497 public static readonly DependencyProperty CustomBrushesProperty = DependencyProperty . Register ( nameof ( CustomBrushes ) ,
9598 typeof ( Dictionary < string , Brush > ) , typeof ( SVGImage ) , new FrameworkPropertyMetadata ( default ,
@@ -725,8 +728,8 @@ static void OnSizeTypeChanged(DependencyObject d, DependencyPropertyChangedEvent
725728
726729 static void OnSourceChanged ( DependencyObject d , DependencyPropertyChangedEventArgs e )
727730 {
728- StreamResourceInfo resource = Application . GetResourceStream ( new Uri ( e . NewValue . ToString ( ) , UriKind . Relative ) ) ;
729- ( ( SVGImage ) d ) . SetImage ( resource . Stream ) ;
731+ StreamResourceInfo resource = e . NewValue != null ? Application . GetResourceStream ( new Uri ( e . NewValue . ToString ( ) , UriKind . Relative ) ) : null ;
732+ ( ( SVGImage ) d ) . SetImage ( resource != null ? resource . Stream : null ) ;
730733 }
731734
732735 static void OnFileSourceChanged ( DependencyObject d , DependencyPropertyChangedEventArgs e )
@@ -739,6 +742,16 @@ static void OnImageSourceChanged(DependencyObject d, DependencyPropertyChangedEv
739742 ( ( SVGImage ) d ) . SetImage ( e . NewValue as Drawing ) ;
740743 }
741744
745+ private static void OverrideColorPropertyChanged ( DependencyObject d , DependencyPropertyChangedEventArgs e )
746+ {
747+ if ( d is SVGImage svgImage && e . NewValue is Color newColor && svgImage . _render != null )
748+ {
749+ svgImage . _render . OverrideColor = newColor ;
750+ svgImage . InvalidateVisual ( ) ;
751+ svgImage . ReRenderSvg ( ) ;
752+ }
753+ }
754+
742755 private static void OverrideStrokeWidthPropertyChanged ( DependencyObject d , DependencyPropertyChangedEventArgs e )
743756 {
744757 if ( d is SVGImage svgImage && e . NewValue is double newStrokeWidth && svgImage . _render != null )
0 commit comments