support for .NET framework 3.5

Still have bugs
This commit is contained in:
NaBian committed 2019-01-21 00:43:10 +08:00
1 parent 5878039e21
commit 7d6b491f25
704 files changed
+48273 -33

No files matched your search

@@ -0,0 +1,76 @@
using System;
using System.Windows;
namespace HandyControl.Expression.Media
{
internal class DrawingPropertyMetadata : FrameworkPropertyMetadata
{
#pragma warning disable 414
private DrawingPropertyMetadataOptions options;
#pragma warning restore 414
private PropertyChangedCallback propertyChangedCallback;
public static event EventHandler<DrawingPropertyChangedEventArgs> DrawingPropertyChanged;
static DrawingPropertyMetadata()
{
DrawingPropertyChanged += delegate (object sender, DrawingPropertyChangedEventArgs args) {
if ((sender is IShape shape) && args.Metadata.AffectsRender)
{
InvalidateGeometryReasons reasons = InvalidateGeometryReasons.PropertyChanged;
if (args.IsAnimated)
{
reasons |= InvalidateGeometryReasons.IsAnimated;
}
shape.InvalidateGeometry(reasons);
}
};
}
public DrawingPropertyMetadata(object defaultValue) : this(defaultValue, DrawingPropertyMetadataOptions.None, null)
{
}
public DrawingPropertyMetadata(PropertyChangedCallback propertyChangedCallback) : this(DependencyProperty.UnsetValue, DrawingPropertyMetadataOptions.None, propertyChangedCallback)
{
}
private DrawingPropertyMetadata(DrawingPropertyMetadataOptions options, object defaultValue) : base(defaultValue, (FrameworkPropertyMetadataOptions)options)
{
}
public DrawingPropertyMetadata(object defaultValue, DrawingPropertyMetadataOptions options) : this(defaultValue, options, null)
{
}
public DrawingPropertyMetadata(object defaultValue, DrawingPropertyMetadataOptions options, PropertyChangedCallback propertyChangedCallback) : base(defaultValue, (FrameworkPropertyMetadataOptions)options, AttachCallback(defaultValue, options, propertyChangedCallback))
{
}
private static PropertyChangedCallback AttachCallback(object defaultValue, DrawingPropertyMetadataOptions options, PropertyChangedCallback propertyChangedCallback)
{
DrawingPropertyMetadata metadata = new DrawingPropertyMetadata(options, defaultValue)
{
options = options,
propertyChangedCallback = propertyChangedCallback
};
return metadata.InternalCallback;
}
private void InternalCallback(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
if (DrawingPropertyChanged != null)
{
DrawingPropertyChangedEventArgs args = new DrawingPropertyChangedEventArgs
{
Metadata = this,
IsAnimated = DependencyPropertyHelper.GetValueSource(sender, e.Property).IsAnimated
};
DrawingPropertyChanged(sender, args);
}
propertyChangedCallback?.Invoke(sender, e);
}
}
}