|
|
@ -1,3 +1,5 @@ |
|
|
|
|
|
using System; |
|
|
|
|
|
using Avalonia.Data; |
|
|
using Avalonia.Media; |
|
|
using Avalonia.Media; |
|
|
|
|
|
|
|
|
namespace Avalonia.Controls.Shapes |
|
|
namespace Avalonia.Controls.Shapes |
|
|
@ -10,6 +12,7 @@ namespace Avalonia.Controls.Shapes |
|
|
static Path() |
|
|
static Path() |
|
|
{ |
|
|
{ |
|
|
AffectsGeometry<Path>(DataProperty); |
|
|
AffectsGeometry<Path>(DataProperty); |
|
|
|
|
|
DataProperty.Changed.AddClassHandler<Path>((o, e) => o.DataChanged(e)); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public Geometry Data |
|
|
public Geometry Data |
|
|
@ -19,5 +22,26 @@ namespace Avalonia.Controls.Shapes |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
protected override Geometry CreateDefiningGeometry() => Data; |
|
|
protected override Geometry CreateDefiningGeometry() => Data; |
|
|
|
|
|
|
|
|
|
|
|
private void DataChanged(AvaloniaPropertyChangedEventArgs e) |
|
|
|
|
|
{ |
|
|
|
|
|
var oldGeometry = (Geometry)e.OldValue; |
|
|
|
|
|
var newGeometry = (Geometry)e.NewValue; |
|
|
|
|
|
|
|
|
|
|
|
if (oldGeometry is object) |
|
|
|
|
|
{ |
|
|
|
|
|
oldGeometry.Changed -= GeometryChanged; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (newGeometry is object) |
|
|
|
|
|
{ |
|
|
|
|
|
newGeometry.Changed += GeometryChanged; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void GeometryChanged(object sender, EventArgs e) |
|
|
|
|
|
{ |
|
|
|
|
|
InvalidateGeometry(); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|