chore: add avalonia Calendar demo.
This commit is contained in:
1 parent
1f48e6106d
commit
98b67b3fd5
5 files changed
+289
No files matched your search
@@ -0,0 +1,7 @@
|
||||
<UserControl xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
x:Class="HandyControlDemo.UserControl.CalendarDemo"
|
||||
Background="{DynamicResource RegionBrush}">
|
||||
<Calendar Margin="32"
|
||||
SelectionMode="MultipleRange" />
|
||||
</UserControl>
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace HandyControlDemo.UserControl;
|
||||
|
||||
public partial class CalendarDemo : Avalonia.Controls.UserControl
|
||||
{
|
||||
public CalendarDemo()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
using Avalonia;
|
||||
using Avalonia.Media;
|
||||
|
||||
namespace HandyControl.Controls;
|
||||
|
||||
public class TitleElement
|
||||
{
|
||||
public static readonly AttachedProperty<IBrush?> BackgroundProperty =
|
||||
AvaloniaProperty.RegisterAttached<TitleElement, AvaloniaObject, IBrush?>("Background", inherits: true);
|
||||
|
||||
public static void SetBackground(AvaloniaObject element, IBrush? value) =>
|
||||
element.SetValue(BackgroundProperty, value);
|
||||
|
||||
public static IBrush? GetBackground(AvaloniaObject element) => element.GetValue(BackgroundProperty);
|
||||
|
||||
public static readonly AttachedProperty<IBrush?> ForegroundProperty =
|
||||
AvaloniaProperty.RegisterAttached<TitleElement, AvaloniaObject, IBrush?>("Foreground", inherits: true);
|
||||
|
||||
public static void SetForeground(AvaloniaObject element, IBrush? value) =>
|
||||
element.SetValue(ForegroundProperty, value);
|
||||
|
||||
public static IBrush? GetForeground(AvaloniaObject element) => element.GetValue(ForegroundProperty);
|
||||
}
|
||||
@@ -0,0 +1,249 @@
|
||||
<ResourceDictionary xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol">
|
||||
<ControlTheme x:Key="{x:Type CalendarButton}"
|
||||
TargetType="CalendarButton">
|
||||
<Setter Property="MinWidth"
|
||||
Value="10" />
|
||||
<Setter Property="MinHeight"
|
||||
Value="10" />
|
||||
<Setter Property="FontSize"
|
||||
Value="12" />
|
||||
<Setter Property="Width"
|
||||
Value="40" />
|
||||
<Setter Property="Height"
|
||||
Value="32" />
|
||||
<Setter Property="HorizontalContentAlignment"
|
||||
Value="Center" />
|
||||
<Setter Property="VerticalContentAlignment"
|
||||
Value="Center" />
|
||||
<Setter Property="Template">
|
||||
<ControlTemplate>
|
||||
<Panel>
|
||||
<Rectangle x:Name="SelectedBackground"
|
||||
Fill="{DynamicResource DangerBrush}"
|
||||
Opacity="0"
|
||||
RadiusY="16"
|
||||
RadiusX="16" />
|
||||
<ContentPresenter Name="PART_ContentPresenter"
|
||||
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||||
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
|
||||
Content="{TemplateBinding Content}"
|
||||
ContentTemplate="{TemplateBinding ContentTemplate}"
|
||||
FontSize="{TemplateBinding FontSize}"
|
||||
Foreground="{TemplateBinding Foreground}" />
|
||||
</Panel>
|
||||
</ControlTemplate>
|
||||
</Setter>
|
||||
|
||||
<Style Selector="^:selected">
|
||||
<Style Selector="^ /template/ Rectangle#SelectedBackground">
|
||||
<Setter Property="Opacity"
|
||||
Value="1" />
|
||||
</Style>
|
||||
<Style Selector="^ /template/ ContentPresenter#PART_ContentPresenter">
|
||||
<Setter Property="Foreground"
|
||||
Value="{DynamicResource TextIconBrush}" />
|
||||
</Style>
|
||||
</Style>
|
||||
</ControlTheme>
|
||||
|
||||
<ControlTheme x:Key="{x:Type CalendarDayButton}"
|
||||
TargetType="CalendarDayButton">
|
||||
<Setter Property="Foreground"
|
||||
Value="{DynamicResource PrimaryTextBrush}" />
|
||||
<Setter Property="FontSize"
|
||||
Value="{StaticResource TextFontSize}" />
|
||||
<Setter Property="MinWidth"
|
||||
Value="10" />
|
||||
<Setter Property="MinHeight"
|
||||
Value="10" />
|
||||
<Setter Property="Width"
|
||||
Value="32" />
|
||||
<Setter Property="Height"
|
||||
Value="32" />
|
||||
<Setter Property="HorizontalContentAlignment"
|
||||
Value="Center" />
|
||||
<Setter Property="VerticalContentAlignment"
|
||||
Value="Center" />
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate>
|
||||
<Panel>
|
||||
<Rectangle x:Name="TodayBackground"
|
||||
Fill="{DynamicResource DangerBrush}"
|
||||
RadiusX="16"
|
||||
RadiusY="16"
|
||||
IsVisible="False" />
|
||||
<Rectangle x:Name="SelectedBackground"
|
||||
Fill="{DynamicResource PrimaryBrush}"
|
||||
RadiusY="16"
|
||||
RadiusX="16"
|
||||
Opacity="0" />
|
||||
<ContentPresenter Name="PART_ContentPresenter"
|
||||
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||||
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
|
||||
Content="{TemplateBinding Content}"
|
||||
ContentTemplate="{TemplateBinding ContentTemplate}"
|
||||
FontSize="{TemplateBinding FontSize}"
|
||||
Foreground="{TemplateBinding Foreground}" />
|
||||
</Panel>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
|
||||
<Style Selector="^:today">
|
||||
<Style Selector="^ /template/ Rectangle#TodayBackground">
|
||||
<Setter Property="IsVisible"
|
||||
Value="True" />
|
||||
</Style>
|
||||
<Style Selector="^ /template/ ContentPresenter#PART_ContentPresenter">
|
||||
<Setter Property="Foreground"
|
||||
Value="{DynamicResource TextIconBrush}" />
|
||||
</Style>
|
||||
</Style>
|
||||
|
||||
<Style Selector="^:selected">
|
||||
<Style Selector="^ /template/ Rectangle#SelectedBackground">
|
||||
<Setter Property="Opacity"
|
||||
Value="1" />
|
||||
</Style>
|
||||
<Style Selector="^ /template/ ContentPresenter#PART_ContentPresenter">
|
||||
<Setter Property="Foreground"
|
||||
Value="{DynamicResource TextIconBrush}" />
|
||||
</Style>
|
||||
</Style>
|
||||
|
||||
<Style Selector="^:inactive">
|
||||
<Style Selector="^ /template/ ContentPresenter#PART_ContentPresenter">
|
||||
<Setter Property="Foreground"
|
||||
Value="{DynamicResource ThirdlyTextBrush}" />
|
||||
</Style>
|
||||
</Style>
|
||||
</ControlTheme>
|
||||
|
||||
<ControlTheme x:Key="{x:Type CalendarItem}"
|
||||
TargetType="CalendarItem">
|
||||
<Setter Property="Margin"
|
||||
Value="0" />
|
||||
<Setter Property="Template">
|
||||
<ControlTemplate>
|
||||
<Grid RowDefinitions="Auto,*"
|
||||
ColumnDefinitions="Auto,*,Auto">
|
||||
<Border Margin="4"
|
||||
CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}"
|
||||
Background="{TemplateBinding HeaderBackground}"
|
||||
Grid.ColumnSpan="3" />
|
||||
<Button x:Name="PART_PreviousButton"
|
||||
Width="50"
|
||||
Foreground="{Binding Path=(hc:TitleElement.Foreground),RelativeSource={RelativeSource TemplatedParent}}"
|
||||
HorizontalAlignment="Left"
|
||||
Grid.Column="0"
|
||||
Height="50"
|
||||
Padding="16"
|
||||
Focusable="False"
|
||||
Grid.Row="0"
|
||||
Theme="{StaticResource ButtonIcon}"
|
||||
hc:IconElement.Geometry="{StaticResource LeftGeometry}" />
|
||||
<Button x:Name="PART_HeaderButton"
|
||||
Focusable="False"
|
||||
Foreground="{Binding Path=(hc:TitleElement.Foreground),RelativeSource={RelativeSource TemplatedParent}}"
|
||||
Grid.Column="1"
|
||||
FontSize="20"
|
||||
HorizontalAlignment="Center"
|
||||
Grid.Row="0"
|
||||
Theme="{StaticResource ButtonCustom}" />
|
||||
<Button x:Name="PART_NextButton"
|
||||
Width="50"
|
||||
Foreground="{Binding Path=(hc:TitleElement.Foreground),RelativeSource={RelativeSource TemplatedParent}}"
|
||||
HorizontalAlignment="Right"
|
||||
Height="50"
|
||||
Padding="16"
|
||||
Grid.Column="2"
|
||||
Focusable="False"
|
||||
Grid.Row="0"
|
||||
Theme="{StaticResource ButtonIcon}"
|
||||
hc:IconElement.Geometry="{StaticResource RightGeometry}" />
|
||||
<Grid Width="240"
|
||||
Height="240"
|
||||
x:Name="PART_MonthView"
|
||||
Margin="10,6,10,10"
|
||||
Grid.ColumnSpan="3"
|
||||
Grid.Column="0"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Grid.Row="1"
|
||||
IsVisible="True"
|
||||
ColumnDefinitions="*,*,*,*,*,*,*"
|
||||
RowDefinitions="*,*,*,*,*,*,*">
|
||||
</Grid>
|
||||
<Grid Width="240"
|
||||
Height="240"
|
||||
x:Name="PART_YearView"
|
||||
Margin="10,6,10,10"
|
||||
Grid.ColumnSpan="3"
|
||||
Grid.Column="0"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Grid.Row="1"
|
||||
IsVisible="False"
|
||||
ColumnDefinitions="*,*,*,*"
|
||||
RowDefinitions="*,*,*">
|
||||
</Grid>
|
||||
</Grid>
|
||||
</ControlTemplate>
|
||||
</Setter>
|
||||
<Setter Property="DayTitleTemplate">
|
||||
<Template x:DataType="x:String">
|
||||
<TextBlock Margin="0,6,0,6"
|
||||
Foreground="{DynamicResource PrimaryTextBrush}"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
FontWeight="Bold"
|
||||
Text="{Binding}" />
|
||||
</Template>
|
||||
</Setter>
|
||||
</ControlTheme>
|
||||
|
||||
<ControlTheme x:Key="CalendarBaseStyle"
|
||||
TargetType="Calendar">
|
||||
<Setter Property="Foreground"
|
||||
Value="{DynamicResource PrimaryTextBrush}" />
|
||||
<Setter Property="Background"
|
||||
Value="{DynamicResource RegionBrush}" />
|
||||
<Setter Property="BorderBrush"
|
||||
Value="{DynamicResource BorderBrush}" />
|
||||
<Setter Property="BorderThickness"
|
||||
Value="0" />
|
||||
<Setter Property="HeaderBackground"
|
||||
Value="{DynamicResource TitleBrush}" />
|
||||
<Setter Property="hc:BorderElement.CornerRadius"
|
||||
Value="{StaticResource DefaultCornerRadius}" />
|
||||
<Setter Property="hc:TitleElement.Foreground"
|
||||
Value="{DynamicResource TextIconBrush}" />
|
||||
<Setter Property="Template">
|
||||
<ControlTemplate>
|
||||
<Panel Margin="8,4,8,8">
|
||||
<Border CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}"
|
||||
Background="{TemplateBinding Background}"
|
||||
Effect="{StaticResource EffectShadow2}" />
|
||||
<Panel Name="PART_Root"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center">
|
||||
<CalendarItem Name="PART_CalendarItem"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}"
|
||||
Background="{TemplateBinding Background}"
|
||||
HeaderBackground="{TemplateBinding HeaderBackground}" />
|
||||
</Panel>
|
||||
</Panel>
|
||||
</ControlTemplate>
|
||||
</Setter>
|
||||
</ControlTheme>
|
||||
|
||||
<ControlTheme x:Key="{x:Type Calendar}"
|
||||
TargetType="Calendar"
|
||||
BasedOn="{StaticResource CalendarBaseStyle}" />
|
||||
</ResourceDictionary>
|
||||
@@ -35,6 +35,7 @@
|
||||
<MergeResourceInclude Source="/Themes/Styles/Slider.axaml" />
|
||||
<MergeResourceInclude Source="/Themes/Styles/Expander.axaml" />
|
||||
<MergeResourceInclude Source="/Themes/Styles/ProgressBar.axaml" />
|
||||
<MergeResourceInclude Source="/Themes/Styles/Calendar.axaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
</ResourceDictionary>
|
||||
</Styles.Resources>
|
||||
|
||||
Reference in new issue
Block a user