diff --git a/demo/Ursa.Demo/Pages/AvatarDemo.axaml b/demo/Ursa.Demo/Pages/AvatarDemo.axaml index 620d1bf..3fbab78 100644 --- a/demo/Ursa.Demo/Pages/AvatarDemo.axaml +++ b/demo/Ursa.Demo/Pages/AvatarDemo.axaml @@ -9,8 +9,27 @@ - + + M7.44721 3.10557C7.786 2.428 8.47852 2 9.23607 2H14.7639C15.5215 2 16.214 2.428 16.5528 3.10557L17.5 5H20C21.6569 5 23 6.34315 23 8V18C23 19.6569 21.6569 21 20 21H4C2.34315 21 1 19.6569 1 18V8C1 6.34315 2.34315 5 4 5H6.5L7.44721 3.10557ZM9 13C9 11.3431 10.3431 10 12 10C13.6569 10 15 11.3431 15 13C15 14.6569 13.6569 16 12 16C10.3431 16 9 14.6569 9 13ZM12 8C9.23858 8 7 10.2386 7 13C7 15.7614 9.23858 18 12 18C14.7614 18 17 15.7614 17 13C17 10.2386 14.7614 8 12 8Z + + + Command="{Binding ClickCommand}" /> + + + + + + + + + + + \ No newline at end of file diff --git a/src/Ursa.Themes.Semi/Controls/Avatar.axaml b/src/Ursa.Themes.Semi/Controls/Avatar.axaml index 3352ca3..5040e88 100644 --- a/src/Ursa.Themes.Semi/Controls/Avatar.axaml +++ b/src/Ursa.Themes.Semi/Controls/Avatar.axaml @@ -12,13 +12,24 @@ - + + + @@ -26,6 +37,9 @@ + \ No newline at end of file diff --git a/src/Ursa/Controls/Avatar/Avatar.cs b/src/Ursa/Controls/Avatar/Avatar.cs index d10361e..d198aa1 100644 --- a/src/Ursa/Controls/Avatar/Avatar.cs +++ b/src/Ursa/Controls/Avatar/Avatar.cs @@ -1,8 +1,12 @@ using Avalonia; using Avalonia.Controls; +using Avalonia.Controls.Metadata; +using Avalonia.Controls.Presenters; +using Avalonia.Media; namespace Ursa.Controls; +[TemplatePart(PART_HoverMask, typeof(ContentPresenter))] public class Avatar : Button { public const string PART_TopPresenter = "PART_TopPresenter"; @@ -15,9 +19,12 @@ public class Avatar : Button public static readonly StyledProperty GapProperty = AvaloniaProperty.Register( nameof(Gap)); - public static readonly StyledProperty SourceProperty = AvaloniaProperty.Register( + public static readonly StyledProperty SourceProperty = AvaloniaProperty.Register( nameof(Source)); + public static readonly StyledProperty HoverMaskProperty = AvaloniaProperty.Register( + nameof(HoverMask)); + public bool ContentMotion { get => GetValue(ContentMotionProperty); @@ -30,9 +37,15 @@ public class Avatar : Button set => SetValue(GapProperty, value); } - public string Source + public IImage? Source { get => GetValue(SourceProperty); set => SetValue(SourceProperty, value); } + + public object? HoverMask + { + get => GetValue(HoverMaskProperty); + set => SetValue(HoverMaskProperty, value); + } } \ No newline at end of file