diff --git a/demo/Ursa.Demo/Pages/ClockDemo.axaml b/demo/Ursa.Demo/Pages/ClockDemo.axaml index c86f20e..4dcde2d 100644 --- a/demo/Ursa.Demo/Pages/ClockDemo.axaml +++ b/demo/Ursa.Demo/Pages/ClockDemo.axaml @@ -9,12 +9,6 @@ d:DesignWidth="800" mc:Ignorable="d"> - + diff --git a/src/Ursa.Themes.Semi/Controls/Clock.axaml b/src/Ursa.Themes.Semi/Controls/Clock.axaml new file mode 100644 index 0000000..a62b9f9 --- /dev/null +++ b/src/Ursa.Themes.Semi/Controls/Clock.axaml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + diff --git a/src/Ursa.Themes.Semi/Controls/_index.axaml b/src/Ursa.Themes.Semi/Controls/_index.axaml index d05cb2e..0e6694b 100644 --- a/src/Ursa.Themes.Semi/Controls/_index.axaml +++ b/src/Ursa.Themes.Semi/Controls/_index.axaml @@ -6,6 +6,7 @@ + diff --git a/src/Ursa/Controls/Clock/Clock.cs b/src/Ursa/Controls/Clock/Clock.cs index 4036044..92bb777 100644 --- a/src/Ursa/Controls/Clock/Clock.cs +++ b/src/Ursa/Controls/Clock/Clock.cs @@ -35,5 +35,38 @@ public class Clock: TemplatedControl get => GetValue(ShowMinuteTicksProperty); set => SetValue(ShowMinuteTicksProperty, value); } + + public static readonly StyledProperty HourHandMarginProperty = AvaloniaProperty.Register( + nameof(HourHandMargin)); + + public double HourHandMargin + { + get => GetValue(HourHandMarginProperty); + set => SetValue(HourHandMarginProperty, value); + } + public static readonly StyledProperty MinuteHandMarginProperty = AvaloniaProperty.Register( + nameof(MinuteHandMargin)); + + public double MinuteHandMargin + { + get => GetValue(MinuteHandMarginProperty); + set => SetValue(MinuteHandMarginProperty, value); + } + + protected override Size MeasureOverride(Size availableSize) + { + double min = Math.Min(availableSize.Height, availableSize.Width); + var newSize = new Size(min, min); + var size = base.MeasureOverride(newSize); + return size; + } + + protected override Size ArrangeOverride(Size finalSize) + { + double min = Math.Min(finalSize.Height, finalSize.Width); + var newSize = new Size(min, min); + var size = base.ArrangeOverride(newSize); + return size; + } } \ No newline at end of file diff --git a/src/Ursa/Controls/Clock/ClockTicks.cs b/src/Ursa/Controls/Clock/ClockTicks.cs index 62360a6..eab1455 100644 --- a/src/Ursa/Controls/Clock/ClockTicks.cs +++ b/src/Ursa/Controls/Clock/ClockTicks.cs @@ -86,6 +86,18 @@ public class ClockTicks: Control AffectsRender(ShowHourTicksProperty); } + protected override Size MeasureOverride(Size availableSize) + { + double minSize= Math.Min(availableSize.Width, availableSize.Height); + return new Size(minSize, minSize); + } + + protected override Size ArrangeOverride(Size finalSize) + { + var minSize = Math.Min(finalSize.Width, finalSize.Height); + return new Size(minSize, minSize); + } + public override void Render(DrawingContext context) { base.Render(context);