-
Notifications
You must be signed in to change notification settings - Fork 3.5k
Expand file tree
/
Copy pathMaterialDesignTheme.DatePicker.xaml
More file actions
196 lines (188 loc) · 15.1 KB
/
MaterialDesignTheme.DatePicker.xaml
File metadata and controls
196 lines (188 loc) · 15.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:converters="clr-namespace:MaterialDesignThemes.Wpf.Converters"
xmlns:convertersInternal="clr-namespace:MaterialDesignThemes.Wpf.Converters.Internal"
xmlns:internal="clr-namespace:MaterialDesignThemes.Wpf.Internal"
xmlns:wpf="clr-namespace:MaterialDesignThemes.Wpf">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Calendar.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.TextBox.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style x:Key="MaterialDesignDatePickerCalendarPortrait"
TargetType="{x:Type Calendar}"
BasedOn="{StaticResource MaterialDesignCalendarPortrait}">
<Setter Property="Margin" Value="16,8,16,24" />
<Setter Property="wpf:ElevationAssist.Elevation" Value="Dp12" />
</Style>
<Style x:Key="MaterialDesignDatePicker" TargetType="{x:Type DatePicker}">
<Style.Resources>
<Style x:Key="NestedTextBoxStyle" TargetType="{x:Type DatePickerTextBox}" BasedOn="{StaticResource MaterialDesignTextBox}" />
</Style.Resources>
<Setter Property="AutomationProperties.Name" Value="{Binding Path=(wpf:HintAssist.Hint), RelativeSource={RelativeSource Self}, Converter={x:Static convertersInternal:AutomationPropertiesNameConverter.Instance}}" />
<Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.ForegroundLight}" />
<Setter Property="BorderThickness" Value="0,0,0,1" />
<Setter Property="CalendarStyle" Value="{StaticResource MaterialDesignDatePickerCalendarPortrait}" />
<Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(TextElement.Foreground), FallbackValue=Black}" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="IsTodayHighlighted" Value="True" />
<Setter Property="Padding" Value="{x:Static wpf:Constants.TextBoxDefaultPadding}" />
<Setter Property="SelectedDateFormat" Value="Short" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DatePicker}">
<ControlTemplate.Resources>
<converters:ThicknessCloneConverter x:Key="DatePickerTextBoxPaddingConverter"
AdditionalOffsetRight="18"
CloneEdges="All" />
<converters:ThicknessCloneConverter x:Key="PartButtonMarginConverter"
CloneEdges="Top,Right,Bottom"
FixedLeft="0" />
<converters:NonDefaultThicknessConverter x:Key="OutlinedBorderInactiveThicknessConverter" DefaultThickness="{x:Static wpf:Constants.DefaultOutlinedBorderInactiveThickness}" />
<converters:NonDefaultThicknessConverter x:Key="OutlinedBorderActiveThicknessConverter" DefaultThickness="{x:Static wpf:Constants.DefaultOutlinedBorderActiveThickness}" />
<ControlTemplate x:Key="CalendarButtonTemplate" TargetType="{x:Type Button}">
<wpf:PackIcon VerticalAlignment="Center"
Background="Transparent"
Foreground="{TemplateBinding Foreground}"
Kind="Calendar" />
</ControlTemplate>
</ControlTemplate.Resources>
<Grid x:Name="PART_Root">
<DatePickerTextBox x:Name="PART_TextBox"
Padding="{TemplateBinding Padding, Converter={StaticResource DatePickerTextBoxPaddingConverter}}"
VerticalAlignment="Stretch"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
wpf:HintAssist.FloatingOffset="{TemplateBinding wpf:HintAssist.FloatingOffset}"
wpf:HintAssist.FloatingScale="{TemplateBinding wpf:HintAssist.FloatingScale}"
wpf:HintAssist.FontFamily="{TemplateBinding wpf:HintAssist.FontFamily}"
wpf:HintAssist.Foreground="{TemplateBinding wpf:HintAssist.Foreground}"
wpf:HintAssist.Background="{TemplateBinding wpf:HintAssist.Background}"
wpf:HintAssist.HintPaddingBrush="{TemplateBinding wpf:HintAssist.HintPaddingBrush}"
wpf:HintAssist.HelperTextStyle="{TemplateBinding wpf:HintAssist.HelperTextStyle}"
wpf:HintAssist.Hint="{TemplateBinding wpf:HintAssist.Hint}"
wpf:HintAssist.HintOpacity="{TemplateBinding wpf:HintAssist.HintOpacity}"
wpf:HintAssist.IsFloating="{TemplateBinding wpf:HintAssist.IsFloating}"
wpf:TextFieldAssist.HasLeadingIcon="{TemplateBinding wpf:TextFieldAssist.HasLeadingIcon}"
wpf:TextFieldAssist.LeadingIcon="{TemplateBinding wpf:TextFieldAssist.LeadingIcon}"
wpf:TextFieldAssist.LeadingIconSize="{TemplateBinding wpf:TextFieldAssist.LeadingIconSize}"
wpf:TextFieldAssist.HasTrailingIcon="{TemplateBinding wpf:TextFieldAssist.HasTrailingIcon}"
wpf:TextFieldAssist.TrailingIcon="{TemplateBinding wpf:TextFieldAssist.TrailingIcon}"
wpf:TextFieldAssist.TrailingIconSize="{TemplateBinding wpf:TextFieldAssist.TrailingIconSize}"
wpf:TextFieldAssist.DecorationVisibility="{TemplateBinding wpf:TextFieldAssist.DecorationVisibility}"
wpf:TextFieldAssist.HasClearButton="{TemplateBinding wpf:TextFieldAssist.HasClearButton}"
wpf:TextFieldAssist.ClearButtonSize="{TemplateBinding wpf:TextFieldAssist.ClearButtonSize}"
wpf:TextFieldAssist.HasFilledTextField="{TemplateBinding wpf:TextFieldAssist.HasFilledTextField}"
wpf:TextFieldAssist.HasOutlinedTextField="{TemplateBinding wpf:TextFieldAssist.HasOutlinedTextField}"
wpf:TextFieldAssist.NewSpecHighlightingEnabled="{TemplateBinding wpf:TextFieldAssist.NewSpecHighlightingEnabled}"
wpf:TextFieldAssist.PrefixText="{TemplateBinding wpf:TextFieldAssist.PrefixText}"
wpf:TextFieldAssist.PrefixTextVisibility="{TemplateBinding wpf:TextFieldAssist.PrefixTextVisibility}"
wpf:TextFieldAssist.PrefixTextHintBehavior="{TemplateBinding wpf:TextFieldAssist.PrefixTextHintBehavior}"
wpf:TextFieldAssist.RippleOnFocusEnabled="{TemplateBinding wpf:TextFieldAssist.RippleOnFocusEnabled}"
wpf:TextFieldAssist.SuffixText="{TemplateBinding wpf:TextFieldAssist.SuffixText}"
wpf:TextFieldAssist.SuffixTextVisibility="{TemplateBinding wpf:TextFieldAssist.SuffixTextVisibility}"
wpf:TextFieldAssist.SuffixTextHintBehavior="{TemplateBinding wpf:TextFieldAssist.SuffixTextHintBehavior}"
wpf:TextFieldAssist.IconVerticalAlignment="{TemplateBinding wpf:TextFieldAssist.IconVerticalAlignment}"
wpf:TextFieldAssist.TextBoxViewVerticalAlignment="{TemplateBinding wpf:TextFieldAssist.TextBoxViewVerticalAlignment}"
wpf:TextFieldAssist.TextBoxViewMargin="{TemplateBinding wpf:TextFieldAssist.TextBoxViewMargin}"
wpf:TextFieldAssist.TextFieldCornerRadius="{TemplateBinding wpf:TextFieldAssist.TextFieldCornerRadius}"
wpf:TextFieldAssist.UnderlineBrush="{TemplateBinding wpf:TextFieldAssist.UnderlineBrush}"
wpf:TextFieldAssist.UnderlineCornerRadius="{TemplateBinding wpf:TextFieldAssist.UnderlineCornerRadius}"
internal:InternalTextFieldAssist.IsMouseOver="{TemplateBinding IsMouseOver}"
BorderBrush="{TemplateBinding BorderBrush}"
Focusable="{TemplateBinding Focusable}"
Style="{DynamicResource NestedTextBoxStyle}">
<DatePickerTextBox.BorderThickness>
<PriorityBinding>
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:DatePickerAssist.OutlinedBorderInactiveThickness)" Converter="{StaticResource OutlinedBorderInactiveThicknessConverter}" />
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="BorderThickness" />
</PriorityBinding>
</DatePickerTextBox.BorderThickness>
<wpf:TextFieldAssist.OutlinedBorderActiveThickness>
<PriorityBinding>
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:DatePickerAssist.OutlinedBorderActiveThickness)" Converter="{StaticResource OutlinedBorderActiveThicknessConverter}" />
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="(wpf:TextFieldAssist.OutlinedBorderActiveThickness)" />
</PriorityBinding>
</wpf:TextFieldAssist.OutlinedBorderActiveThickness>
</DatePickerTextBox>
<!-- VerticalAlignment=Center to follow the default ComboBox style where the arrow is always vertically centered. Could be problematic to try to calculate the offset because it needs to be v-centered in relation to the content of the nested TextBox -->
<Button x:Name="PART_Button"
Height="16"
Margin="{TemplateBinding Padding, Converter={StaticResource PartButtonMarginConverter}}"
HorizontalAlignment="Right"
VerticalAlignment="Center"
Focusable="False"
Foreground="{Binding ElementName=PART_TextBox, Path=Foreground}"
Opacity="{TemplateBinding wpf:HintAssist.HintOpacity}"
Template="{StaticResource CalendarButtonTemplate}" />
<Popup x:Name="PART_Popup"
AllowsTransparency="True"
CustomPopupPlacementCallback="{x:Static wpf:CustomPopupPlacementCallbackHelper.LargePopupCallback}"
Placement="Custom"
PlacementTarget="{Binding ElementName=PART_TextBox}"
PopupAnimation="Fade"
StaysOpen="False" />
</Grid>
<ControlTemplate.Triggers>
<!-- PART_Button hovering -->
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsEnabled" Value="True" />
<Condition SourceName="PART_Button" Property="IsMouseOver" Value="True" />
</MultiTrigger.Conditions>
<Setter TargetName="PART_Button" Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
</MultiTrigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="PART_Button" Property="Opacity" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:HintAssist.HintOpacity), Converter={x:Static converters:MathConverter.MultiplyInstance}, ConverterParameter={x:Static wpf:Constants.TextBoxNotEnabledOpacity}}" />
<Setter TargetName="PART_TextBox" Property="IsReadOnly" Value="False" />
</Trigger>
<!-- Validation.HasError -->
<Trigger Property="Validation.HasError" Value="True">
<Setter TargetName="PART_TextBox" Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.ValidationError}" />
<Setter TargetName="PART_TextBox" Property="wpf:ValidationAssist.HasError" Value="True" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Validation.ErrorTemplate" Value="{StaticResource MaterialDesignValidationErrorTemplate}" />
<Setter Property="VerticalContentAlignment" Value="Stretch" />
<Setter Property="wpf:HintAssist.HelperTextStyle" Value="{StaticResource MaterialDesignHelperTextBlock}" />
<Setter Property="internal:ClearText.HandlesClearCommand" Value="True" />
<Setter Property="wpf:HintAssist.Foreground" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
<Setter Property="wpf:TextFieldAssist.TextBoxViewMargin" Value="{x:Static wpf:Constants.DefaultTextBoxViewMargin}" />
<Setter Property="wpf:TextFieldAssist.UnderlineBrush" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
</Style>
<Style x:Key="MaterialDesignFloatingHintDatePicker"
TargetType="{x:Type DatePicker}"
BasedOn="{StaticResource MaterialDesignDatePicker}">
<Style.Resources>
<Style x:Key="NestedTextBoxStyle" TargetType="DatePickerTextBox" BasedOn="{StaticResource MaterialDesignFloatingHintTextBox}" />
</Style.Resources>
<Setter Property="wpf:HintAssist.IsFloating" Value="True" />
<Setter Property="Padding" Value="{x:Static wpf:Constants.FloatingTextBoxDefaultPadding}" />
</Style>
<Style x:Key="MaterialDesignFilledDatePicker"
TargetType="{x:Type DatePicker}"
BasedOn="{StaticResource MaterialDesignFloatingHintDatePicker}">
<Style.Resources>
<Style x:Key="NestedTextBoxStyle" TargetType="DatePickerTextBox" BasedOn="{StaticResource MaterialDesignFilledTextBox}" />
</Style.Resources>
<Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.TextBox.FilledBackground}" />
<Setter Property="Padding" Value="{x:Static wpf:Constants.FilledTextBoxDefaultPadding}" />
<Setter Property="wpf:TextFieldAssist.HasFilledTextField" Value="True" />
<Setter Property="wpf:TextFieldAssist.TextFieldCornerRadius" Value="4,4,0,0" />
<Setter Property="wpf:TextFieldAssist.UnderlineCornerRadius" Value="0" />
</Style>
<Style x:Key="MaterialDesignOutlinedDatePicker"
TargetType="{x:Type DatePicker}"
BasedOn="{StaticResource MaterialDesignFloatingHintDatePicker}">
<Style.Resources>
<Style x:Key="NestedTextBoxStyle" TargetType="DatePickerTextBox" BasedOn="{StaticResource MaterialDesignOutlinedTextBox}" />
</Style.Resources>
<Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.TextBox.OutlineBorder}" />
<Setter Property="BorderThickness" Value="{x:Static wpf:Constants.DefaultOutlinedBorderInactiveThickness}" />
<Setter Property="Padding" Value="{x:Static wpf:Constants.OutlinedTextBoxDefaultPadding}" />
<Setter Property="wpf:TextFieldAssist.HasOutlinedTextField" Value="True" />
<Setter Property="wpf:TextFieldAssist.TextFieldCornerRadius" Value="4" />
</Style>
</ResourceDictionary>