518 lines
30 KiB
XML
518 lines
30 KiB
XML
<ResourceDictionary
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:controls="clr-namespace:WPFluent.Controls">
|
|
|
|
<!--
|
|
TODO:
|
|
Selecting the month and year / decade should be visible and active right away, but it is not {{sad pepe}}.
|
|
The behavior of the calendar needs to be changed but without creating a new control.
|
|
All this in order to use the appearance of the picker compatible with MS Office.
|
|
-->
|
|
<!--<ResourceDictionary.MergedDictionaries>
|
|
<ResourceDictionary Source="/WPFluent;component/Themes/Light.xaml" />
|
|
</ResourceDictionary.MergedDictionaries>-->
|
|
<!-- HINT: Day button style -->
|
|
<Style x:Key="DefaultCalendarDayButtonStyle" TargetType="CalendarDayButton">
|
|
<Setter Property="MinWidth" Value="30" />
|
|
<Setter Property="MinHeight" Value="30" />
|
|
<Setter Property="FontSize" Value="14" />
|
|
<Setter Property="HorizontalContentAlignment" Value="Center" />
|
|
<Setter Property="VerticalContentAlignment" Value="Center" />
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="CalendarDayButton">
|
|
<Grid>
|
|
<Rectangle
|
|
x:Name="TodayBackground"
|
|
Fill="{DynamicResource SystemFillColorAttentionBrush}"
|
|
Opacity="0"
|
|
RadiusX="99"
|
|
RadiusY="99" />
|
|
<Rectangle
|
|
x:Name="SelectedBackground"
|
|
Opacity="0"
|
|
RadiusX="99"
|
|
RadiusY="99"
|
|
Stroke="{DynamicResource SystemFillColorAttentionBrush}"
|
|
StrokeThickness="1" />
|
|
<Border
|
|
Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}" />
|
|
<Rectangle
|
|
x:Name="HighlightBackground"
|
|
Fill="{DynamicResource ControlFillColorSecondaryBrush}"
|
|
Opacity="0"
|
|
RadiusX="99"
|
|
RadiusY="99" />
|
|
<ContentPresenter
|
|
x:Name="NormalText"
|
|
Margin="5,1,5,1"
|
|
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
|
|
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
|
|
TextBlock.Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
|
|
<Rectangle
|
|
x:Name="DayButtonFocusVisual"
|
|
IsHitTestVisible="false"
|
|
RadiusX="1"
|
|
RadiusY="1"
|
|
Visibility="Collapsed">
|
|
<Rectangle.Stroke>
|
|
<SolidColorBrush Color="Transparent" />
|
|
</Rectangle.Stroke>
|
|
</Rectangle>
|
|
<VisualStateManager.VisualStateGroups>
|
|
<VisualStateGroup Name="CommonStates">
|
|
<VisualStateGroup.Transitions>
|
|
<VisualTransition GeneratedDuration="0:0:0.1" />
|
|
</VisualStateGroup.Transitions>
|
|
<VisualState Name="Normal" />
|
|
<VisualState Name="MouseOver">
|
|
<Storyboard>
|
|
<DoubleAnimation
|
|
Storyboard.TargetName="HighlightBackground"
|
|
Storyboard.TargetProperty="Opacity"
|
|
To="1"
|
|
Duration="0" />
|
|
</Storyboard>
|
|
</VisualState>
|
|
<VisualState Name="Pressed">
|
|
<Storyboard>
|
|
<DoubleAnimation
|
|
Storyboard.TargetName="HighlightBackground"
|
|
Storyboard.TargetProperty="Opacity"
|
|
To="1"
|
|
Duration="0" />
|
|
</Storyboard>
|
|
</VisualState>
|
|
<VisualState Name="Disabled">
|
|
<Storyboard>
|
|
<DoubleAnimation
|
|
Storyboard.TargetName="HighlightBackground"
|
|
Storyboard.TargetProperty="Opacity"
|
|
To="0"
|
|
Duration="0" />
|
|
<DoubleAnimation
|
|
Storyboard.TargetName="NormalText"
|
|
Storyboard.TargetProperty="Opacity"
|
|
To="1"
|
|
Duration="0" />
|
|
</Storyboard>
|
|
</VisualState>
|
|
</VisualStateGroup>
|
|
<VisualStateGroup Name="SelectionStates">
|
|
<VisualStateGroup.Transitions>
|
|
<VisualTransition GeneratedDuration="0" />
|
|
</VisualStateGroup.Transitions>
|
|
<VisualState Name="Unselected" />
|
|
<VisualState Name="Selected">
|
|
<Storyboard>
|
|
<DoubleAnimation
|
|
Storyboard.TargetName="SelectedBackground"
|
|
Storyboard.TargetProperty="Opacity"
|
|
To="1"
|
|
Duration="0" />
|
|
</Storyboard>
|
|
</VisualState>
|
|
</VisualStateGroup>
|
|
<VisualStateGroup Name="CalendarButtonFocusStates">
|
|
<VisualStateGroup.Transitions>
|
|
<VisualTransition GeneratedDuration="0" />
|
|
</VisualStateGroup.Transitions>
|
|
<VisualState Name="CalendarButtonFocused">
|
|
<Storyboard>
|
|
<ObjectAnimationUsingKeyFrames
|
|
Storyboard.TargetName="DayButtonFocusVisual"
|
|
Storyboard.TargetProperty="Visibility"
|
|
Duration="0">
|
|
<DiscreteObjectKeyFrame KeyTime="0">
|
|
<DiscreteObjectKeyFrame.Value>
|
|
<Visibility>Visible</Visibility>
|
|
</DiscreteObjectKeyFrame.Value>
|
|
</DiscreteObjectKeyFrame>
|
|
</ObjectAnimationUsingKeyFrames>
|
|
</Storyboard>
|
|
</VisualState>
|
|
<VisualState Name="CalendarButtonUnfocused">
|
|
<Storyboard>
|
|
<ObjectAnimationUsingKeyFrames
|
|
Storyboard.TargetName="DayButtonFocusVisual"
|
|
Storyboard.TargetProperty="Visibility"
|
|
Duration="0">
|
|
<DiscreteObjectKeyFrame KeyTime="0">
|
|
<DiscreteObjectKeyFrame.Value>
|
|
<Visibility>Collapsed</Visibility>
|
|
</DiscreteObjectKeyFrame.Value>
|
|
</DiscreteObjectKeyFrame>
|
|
</ObjectAnimationUsingKeyFrames>
|
|
</Storyboard>
|
|
</VisualState>
|
|
</VisualStateGroup>
|
|
<VisualStateGroup Name="ActiveStates">
|
|
<VisualStateGroup.Transitions>
|
|
<VisualTransition GeneratedDuration="0" />
|
|
</VisualStateGroup.Transitions>
|
|
<VisualState Name="Active" />
|
|
</VisualStateGroup>
|
|
<VisualStateGroup Name="DayStates">
|
|
<VisualStateGroup.Transitions>
|
|
<VisualTransition GeneratedDuration="0" />
|
|
</VisualStateGroup.Transitions>
|
|
<VisualState Name="RegularDay" />
|
|
<VisualState Name="Today">
|
|
<Storyboard>
|
|
<DoubleAnimation
|
|
Storyboard.TargetName="TodayBackground"
|
|
Storyboard.TargetProperty="Opacity"
|
|
To="1"
|
|
Duration="0" />
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalText" Storyboard.TargetProperty="(TextBlock.Foreground)">
|
|
<ObjectAnimationUsingKeyFrames.KeyFrames>
|
|
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{DynamicResource TextOnAccentFillColorPrimaryBrush}" />
|
|
</ObjectAnimationUsingKeyFrames.KeyFrames>
|
|
</ObjectAnimationUsingKeyFrames>
|
|
</Storyboard>
|
|
</VisualState>
|
|
</VisualStateGroup>
|
|
<VisualStateGroup Name="BlackoutDayStates" />
|
|
</VisualStateManager.VisualStateGroups>
|
|
</Grid>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- HINT: Month/year/decade button style -->
|
|
<Style x:Key="DefaultCalendarButtonStyle" TargetType="CalendarButton">
|
|
<Setter Property="MinWidth" Value="40" />
|
|
<Setter Property="MinHeight" Value="40" />
|
|
<Setter Property="FontSize" Value="12" />
|
|
<Setter Property="HorizontalContentAlignment" Value="Center" />
|
|
<Setter Property="VerticalContentAlignment" Value="Center" />
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="CalendarButton">
|
|
<Grid>
|
|
<Rectangle
|
|
x:Name="SelectedBackground"
|
|
Fill="{DynamicResource SystemFillColorAttentionBrush}"
|
|
Opacity="0"
|
|
RadiusX="99"
|
|
RadiusY="99" />
|
|
<Rectangle
|
|
x:Name="Background"
|
|
Fill="{DynamicResource ControlFillColorSecondaryBrush}"
|
|
Opacity="0"
|
|
RadiusX="99"
|
|
RadiusY="99" />
|
|
<ContentPresenter
|
|
x:Name="NormalText"
|
|
Margin="1,0,1,1"
|
|
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
|
|
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
|
|
TextBlock.Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
|
|
<Rectangle
|
|
x:Name="CalendarButtonFocusVisual"
|
|
IsHitTestVisible="false"
|
|
RadiusX="99"
|
|
RadiusY="99"
|
|
Stroke="{DynamicResource TextFillColorPrimaryBrush}"
|
|
Visibility="Collapsed" />
|
|
|
|
<VisualStateManager.VisualStateGroups>
|
|
<VisualStateGroup Name="CommonStates">
|
|
<VisualStateGroup.Transitions>
|
|
<VisualTransition GeneratedDuration="0:0:0.1" />
|
|
</VisualStateGroup.Transitions>
|
|
<VisualState Name="Normal" />
|
|
<VisualState Name="MouseOver">
|
|
<Storyboard>
|
|
<DoubleAnimation
|
|
Storyboard.TargetName="Background"
|
|
Storyboard.TargetProperty="Opacity"
|
|
To="1"
|
|
Duration="0" />
|
|
</Storyboard>
|
|
</VisualState>
|
|
<VisualState Name="Pressed">
|
|
<Storyboard>
|
|
<DoubleAnimation
|
|
Storyboard.TargetName="Background"
|
|
Storyboard.TargetProperty="Opacity"
|
|
To="1"
|
|
Duration="0" />
|
|
</Storyboard>
|
|
</VisualState>
|
|
</VisualStateGroup>
|
|
<VisualStateGroup Name="SelectionStates">
|
|
<VisualStateGroup.Transitions>
|
|
<VisualTransition GeneratedDuration="0" />
|
|
</VisualStateGroup.Transitions>
|
|
<VisualState Name="Unselected" />
|
|
<VisualState Name="Selected">
|
|
<Storyboard>
|
|
<DoubleAnimation
|
|
Storyboard.TargetName="SelectedBackground"
|
|
Storyboard.TargetProperty="Opacity"
|
|
To="1"
|
|
Duration="0" />
|
|
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalText" Storyboard.TargetProperty="(TextBlock.Foreground)">
|
|
<ObjectAnimationUsingKeyFrames.KeyFrames>
|
|
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{DynamicResource TextOnAccentFillColorPrimaryBrush}" />
|
|
</ObjectAnimationUsingKeyFrames.KeyFrames>
|
|
</ObjectAnimationUsingKeyFrames>
|
|
</Storyboard>
|
|
</VisualState>
|
|
</VisualStateGroup>
|
|
<VisualStateGroup Name="ActiveStates">
|
|
<VisualStateGroup.Transitions>
|
|
<VisualTransition GeneratedDuration="0" />
|
|
</VisualStateGroup.Transitions>
|
|
<VisualState Name="Active" />
|
|
</VisualStateGroup>
|
|
<VisualStateGroup Name="CalendarButtonFocusStates">
|
|
<VisualStateGroup.Transitions>
|
|
<VisualTransition GeneratedDuration="0" />
|
|
</VisualStateGroup.Transitions>
|
|
<VisualState Name="CalendarButtonFocused">
|
|
<Storyboard>
|
|
<ObjectAnimationUsingKeyFrames
|
|
Storyboard.TargetName="CalendarButtonFocusVisual"
|
|
Storyboard.TargetProperty="Visibility"
|
|
Duration="0">
|
|
<DiscreteObjectKeyFrame KeyTime="0">
|
|
<DiscreteObjectKeyFrame.Value>
|
|
<Visibility>Visible</Visibility>
|
|
</DiscreteObjectKeyFrame.Value>
|
|
</DiscreteObjectKeyFrame>
|
|
</ObjectAnimationUsingKeyFrames>
|
|
</Storyboard>
|
|
</VisualState>
|
|
<VisualState Name="CalendarButtonUnfocused" />
|
|
</VisualStateGroup>
|
|
</VisualStateManager.VisualStateGroups>
|
|
</Grid>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style x:Key="DefaultCalendarItemStyle" TargetType="{x:Type CalendarItem}">
|
|
<Setter Property="Margin" Value="0" />
|
|
<Setter Property="BorderThickness" Value="0" />
|
|
<Setter Property="BorderBrush" Value="Transparent" />
|
|
<Setter Property="Background" Value="Transparent" />
|
|
<Setter Property="SnapsToDevicePixels" Value="True" />
|
|
<Setter Property="OverridesDefaultStyle" Value="True" />
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="{x:Type CalendarItem}">
|
|
<Grid x:Name="PART_Root" Margin="12">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="*" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- HINT: Header with title and navigation buttons -->
|
|
<Grid Grid.Row="0" Margin="8,0,8,14">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
<controls:Button
|
|
x:Name="PART_HeaderButton"
|
|
Grid.Column="0"
|
|
Margin="-6,0,0,0"
|
|
Padding="6,2"
|
|
HorizontalAlignment="Left"
|
|
VerticalAlignment="Center"
|
|
Appearance="Accent"
|
|
Background="Transparent"
|
|
BorderBrush="Transparent"
|
|
Focusable="False"
|
|
FontSize="14"
|
|
FontWeight="Bold"
|
|
Foreground="{DynamicResource TextFillColorPrimaryBrush}" />
|
|
<controls:Button
|
|
x:Name="PART_PreviousButton"
|
|
Grid.Column="1"
|
|
Width="26"
|
|
Height="26"
|
|
Margin="0,0,8,0"
|
|
Padding="0"
|
|
HorizontalAlignment="Right"
|
|
VerticalAlignment="Center"
|
|
Appearance="Accent"
|
|
Background="Transparent"
|
|
BorderBrush="Transparent"
|
|
Content=""
|
|
Focusable="False"
|
|
Foreground="{DynamicResource TextFillColorSecondaryBrush}">
|
|
<controls:Button.Icon>
|
|
<controls:SymbolIcon
|
|
Filled="True"
|
|
FontSize="26"
|
|
Symbol="CaretUp20" />
|
|
</controls:Button.Icon>
|
|
</controls:Button>
|
|
<controls:Button
|
|
x:Name="PART_NextButton"
|
|
Grid.Column="2"
|
|
Width="26"
|
|
Height="26"
|
|
Margin="0"
|
|
Padding="0"
|
|
HorizontalAlignment="Right"
|
|
VerticalAlignment="Center"
|
|
Appearance="Accent"
|
|
Background="Transparent"
|
|
BorderBrush="Transparent"
|
|
Content=""
|
|
Focusable="False"
|
|
Foreground="{DynamicResource TextFillColorSecondaryBrush}">
|
|
<controls:Button.Icon>
|
|
<controls:SymbolIcon
|
|
Filled="True"
|
|
FontSize="26"
|
|
Symbol="CaretDown20" />
|
|
</controls:Button.Icon>
|
|
</controls:Button>
|
|
</Grid>
|
|
|
|
<!-- HINT: Day picker -->
|
|
<Grid
|
|
x:Name="PART_MonthView"
|
|
Grid.Row="1"
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Center"
|
|
Visibility="Visible">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
</Grid>
|
|
|
|
<Border
|
|
Grid.Row="1"
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Center">
|
|
<Grid x:Name="PART_YearView" Visibility="Hidden">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<Rectangle
|
|
x:Name="PART_DisabledVisual"
|
|
Grid.Row="0"
|
|
Grid.RowSpan="2"
|
|
Opacity="0"
|
|
RadiusX="2"
|
|
RadiusY="2"
|
|
Stretch="Fill"
|
|
Stroke="Transparent"
|
|
StrokeThickness="0"
|
|
Visibility="Collapsed">
|
|
<Rectangle.Fill>
|
|
<SolidColorBrush Color="{DynamicResource ControlFillColorDefault}" />
|
|
</Rectangle.Fill>
|
|
</Rectangle>
|
|
</Grid>
|
|
</Grid>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter TargetName="PART_DisabledVisual" Property="Visibility" Value="Visible" />
|
|
</Trigger>
|
|
<DataTrigger Binding="{Binding DisplayMode, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Calendar}}}" Value="Year">
|
|
<Setter TargetName="PART_MonthView" Property="Visibility" Value="Hidden" />
|
|
<Setter TargetName="PART_YearView" Property="Visibility" Value="Visible" />
|
|
</DataTrigger>
|
|
<DataTrigger Binding="{Binding DisplayMode, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Calendar}}}" Value="Decade">
|
|
<Setter TargetName="PART_MonthView" Property="Visibility" Value="Hidden" />
|
|
<Setter TargetName="PART_YearView" Property="Visibility" Value="Visible" />
|
|
</DataTrigger>
|
|
</ControlTemplate.Triggers>
|
|
<ControlTemplate.Resources>
|
|
<DataTemplate x:Key="{x:Static CalendarItem.DayTitleTemplateResourceKey}">
|
|
<TextBlock
|
|
Margin="0,0,0,6"
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Center"
|
|
FontSize="12"
|
|
FontWeight="SemiBold"
|
|
Foreground="{DynamicResource TextFillColorPrimaryBrush}"
|
|
Text="{Binding}" />
|
|
</DataTemplate>
|
|
</ControlTemplate.Resources>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- https://developer.microsoft.com/en-us/fluentui#/controls/web/datepicker -->
|
|
|
|
<Style x:Key="DefaultCalendarStyle" TargetType="{x:Type Calendar}">
|
|
<Setter Property="CalendarButtonStyle" Value="{StaticResource DefaultCalendarButtonStyle}" />
|
|
<Setter Property="CalendarDayButtonStyle" Value="{StaticResource DefaultCalendarDayButtonStyle}" />
|
|
<Setter Property="CalendarItemStyle" Value="{StaticResource DefaultCalendarItemStyle}" />
|
|
<Setter Property="Foreground" Value="{DynamicResource TextFillColorPrimaryBrush}" />
|
|
<Setter Property="Background" Value="Transparent" />
|
|
<Setter Property="BorderBrush" Value="Transparent" />
|
|
<Setter Property="BorderThickness" Value="0" />
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="{x:Type Calendar}">
|
|
<Border
|
|
x:Name="PART_Root"
|
|
Margin="0"
|
|
Padding="0"
|
|
Background="{DynamicResource AcrylicBackgroundFillColorDefaultBrush}"
|
|
BorderBrush="{DynamicResource SurfaceStrokeColorFlyoutBrush}"
|
|
BorderThickness="1"
|
|
CornerRadius="8">
|
|
<CalendarItem
|
|
x:Name="PART_CalendarItem"
|
|
Margin="0"
|
|
Padding="0"
|
|
HorizontalAlignment="Stretch"
|
|
VerticalAlignment="Stretch"
|
|
Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"
|
|
Style="{TemplateBinding CalendarItemStyle}" />
|
|
</Border>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style BasedOn="{StaticResource DefaultCalendarStyle}" TargetType="{x:Type Calendar}" />
|
|
|
|
</ResourceDictionary>
|