Explorar el Código

Fixed padding for DateSelector and TimeSElector buttons

Kenric Nugteren hace 1 mes
padre
commit
f476f4c427

+ 0 - 21
InABox.Avalonia/Components/DateSelector/DateSelectorButton.axaml

@@ -1,21 +0,0 @@
-<UserControl xmlns="https://github.com/avaloniaui"
-			 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-			 xmlns:components="using:InABox.Avalonia.Components"
-			 x:Class="InABox.Avalonia.Components.DateSelectorButton"
-			 x:DataType="components:DateSelectorButton">
-	<UserControl.Resources>
-		<components:DateSelectorDateTimeFormatter x:Key="dateFormatter"/>
-	</UserControl.Resources>
-	<Button Classes="Standard"
-			Command="{Binding $parent[components:DateSelectorButton].ClickCommand}"
-			Padding="0"
-			Background="Transparent"
-			BorderThickness="0">
-		<Button.Content>
-			<MultiBinding Converter="{StaticResource dateFormatter}">
-				<Binding Path="$parent[components:DateSelectorButton].Date"/>
-				<Binding Path="$parent[components:DateSelectorButton]"/>
-			</MultiBinding>
-		</Button.Content>
-	</Button>
-</UserControl>

+ 1 - 6
InABox.Avalonia/Components/DateSelector/DateSelectorButton.axaml.cs → InABox.Avalonia/Components/DateSelector/DateSelectorButton.cs

@@ -19,7 +19,7 @@ public class DateSelectorDateChangedEventArgs(DateTime? oldDate, DateTime? newDa
     public DateTime? NewDate { get; set; } = newDate;
 }
 
-public partial class DateSelectorButton : UserControl
+public partial class DateSelectorButton : TemplatedControl
 {
     public static readonly StyledProperty<string> PromptProperty =
         AvaloniaProperty.Register<DateSelectorButton, string>(nameof(Prompt));
@@ -68,11 +68,6 @@ public partial class DateSelectorButton : UserControl
             args.NewValue is DateTime newDate ? newDate : null));
     }
 
-    public DateSelectorButton()
-    {
-        InitializeComponent();
-    }
-
     [RelayCommand]
     private async Task Click()
     {

+ 0 - 21
InABox.Avalonia/Components/TimeSelector/TimeSelectorButton.axaml

@@ -1,21 +0,0 @@
-<UserControl xmlns="https://github.com/avaloniaui"
-			 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-			 xmlns:components="using:InABox.Avalonia.Components"
-			 x:Class="InABox.Avalonia.Components.TimeSelectorButton"
-			 x:DataType="components:TimeSelectorButton">
-	<UserControl.Resources>
-		<components:TimeSelectorTimeSpanFormatter x:Key="timeFormatter"/>
-	</UserControl.Resources>
-	<Button Classes="Standard"
-			Command="{Binding $parent[components:TimeSelectorButton].ClickCommand}"
-			Padding="0"
-			Background="Transparent"
-			BorderThickness="0">
-		<Button.Content>
-			<MultiBinding Converter="{StaticResource timeFormatter}">
-				<Binding Path="$parent[components:TimeSelectorButton].Time"/>
-				<Binding Path="$parent[components:TimeSelectorButton]"/>
-			</MultiBinding>
-		</Button.Content>
-	</Button>
-</UserControl>

+ 1 - 6
InABox.Avalonia/Components/TimeSelector/TimeSelectorButton.axaml.cs → InABox.Avalonia/Components/TimeSelector/TimeSelectorButton.cs

@@ -19,7 +19,7 @@ public class TimeSelectorTimeChangedEventArgs(TimeSpan? oldTime, TimeSpan? newTi
     public TimeSpan? NewTime { get; set; } = newTime;
 }
 
-public partial class TimeSelectorButton : UserControl
+public partial class TimeSelectorButton : TemplatedControl
 {
     public static readonly StyledProperty<string> PromptProperty =
         AvaloniaProperty.Register<TimeSelectorButton, string>(nameof(Prompt));
@@ -68,11 +68,6 @@ public partial class TimeSelectorButton : UserControl
             args.NewValue is TimeSpan newTime ? newTime : null));
     }
 
-    public TimeSelectorButton()
-    {
-        InitializeComponent();
-    }
-
     [RelayCommand]
     private async Task Click()
     {

+ 0 - 6
InABox.Avalonia/InABox.Avalonia.csproj

@@ -59,15 +59,9 @@
     </ItemGroup>
 
     <ItemGroup>
-      <Compile Update="Components\TimeSelector\TimeSelectorButton.axaml.cs">
-        <DependentUpon>TimeSelectorButton.axaml</DependentUpon>
-      </Compile>
       <Compile Update="Components\TimeSelector\TimeSelectorView.axaml.cs">
         <DependentUpon>TimeSelectorView.axaml</DependentUpon>
       </Compile>
-      <Compile Update="Components\DateSelector\DateSelectorButton.axaml.cs">
-        <DependentUpon>DateSelectorButton.axaml</DependentUpon>
-      </Compile>
       <Compile Update="Components\ModuleGrid\PrsModuleGrid.axaml.cs">
         <DependentUpon>PrsModuleGrid.axaml</DependentUpon>
         <SubType>Code</SubType>

+ 27 - 0
InABox.Avalonia/Theme/Classes/DateSelectorButton.axaml

@@ -2,6 +2,33 @@
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 		xmlns:components="using:InABox.Avalonia.Components">
 	<Style Selector="components|DateSelectorButton">
+		<Style.Resources>
+			<components:DateSelectorDateTimeFormatter x:Key="dateFormatter"/>
+		</Style.Resources>
+		<Setter Property="Template">
+			<ControlTemplate>
+				<Button Classes="Standard"
+						Command="{Binding $parent[components:DateSelectorButton].ClickCommand}">
+					<Button.Styles>
+						<Style Selector="Button.Standard">
+							<Setter Property="CornerRadius" Value="{TemplateBinding CornerRadius}"/>
+							<Setter Property="Padding" Value="{TemplateBinding Padding}"/>
+							<Setter Property="Margin" Value="{TemplateBinding Margin}"/>
+							<Setter Property="Background" Value="{TemplateBinding Background}"/>
+							<Setter Property="Foreground" Value="{TemplateBinding Foreground}"/>
+							<Setter Property="BorderBrush" Value="{TemplateBinding BorderBrush}"/>
+							<Setter Property="BorderThickness" Value="{TemplateBinding BorderThickness}"/>
+						</Style>
+					</Button.Styles>
+					<Button.Content>
+						<MultiBinding Converter="{StaticResource dateFormatter}">
+							<Binding Path="$parent[components:DateSelectorButton].Date"/>
+							<Binding Path="$parent[components:DateSelectorButton]"/>
+						</MultiBinding>
+					</Button.Content>
+				</Button>
+			</ControlTemplate>
+		</Setter>
 		<Setter Property="BorderBrush" Value="{DynamicResource PrsButtonBorder}" />
 		<Setter Property="BorderThickness">
 			<Setter.Value>

+ 27 - 0
InABox.Avalonia/Theme/Classes/TimeSelectorButton.axaml

@@ -3,6 +3,33 @@
 		xmlns:components="using:InABox.Avalonia.Components"
 		xmlns:timeSelector="using:InABox.Avalonia.Components.TimeSelector">
 	<Style Selector="components|TimeSelectorButton">
+		<Style.Resources>
+			<components:TimeSelectorTimeSpanFormatter x:Key="timeFormatter"/>
+		</Style.Resources>
+		<Setter Property="Template">
+			<ControlTemplate>
+				<Button Classes="Standard"
+						Command="{Binding $parent[components:TimeSelectorButton].ClickCommand}">
+					<Button.Styles>
+						<Style Selector="Button.Standard">
+							<Setter Property="CornerRadius" Value="{TemplateBinding CornerRadius}"/>
+							<Setter Property="Padding" Value="{TemplateBinding Padding}"/>
+							<Setter Property="Margin" Value="{TemplateBinding Margin}"/>
+							<Setter Property="Background" Value="{TemplateBinding Background}"/>
+							<Setter Property="Foreground" Value="{TemplateBinding Foreground}"/>
+							<Setter Property="BorderBrush" Value="{TemplateBinding BorderBrush}"/>
+							<Setter Property="BorderThickness" Value="{TemplateBinding BorderThickness}"/>
+						</Style>
+					</Button.Styles>
+					<Button.Content>
+						<MultiBinding Converter="{StaticResource timeFormatter}">
+							<Binding Path="$parent[components:TimeSelectorButton].Time"/>
+							<Binding Path="$parent[components:TimeSelectorButton]"/>
+						</MultiBinding>
+					</Button.Content>
+				</Button>
+			</ControlTemplate>
+		</Setter>
 		<Setter Property="BorderBrush" Value="{DynamicResource PrsButtonBorder}" />
 		<Setter Property="BorderThickness">
 			<Setter.Value>