Skip to content

Commit e138539

Browse files
committed
* DatePicker Style: Added FloatingHint Trigger to change margin (now the DatePicker reacts the same as a normal TextBox)
1 parent 31e0dc6 commit e138539

File tree

1 file changed

+109
-106
lines changed

1 file changed

+109
-106
lines changed

MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.DatePicker.xaml

Lines changed: 109 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -11,57 +11,57 @@
1111
<converters:TextFieldHintVisibilityConverter x:Key="TextFieldHintVisibilityConverter" />
1212

1313
<Style x:Key="MaterialDesignDatePickerTextBox" TargetType="{x:Type DatePickerTextBox}">
14-
<Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(TextElement.Foreground)}"/>
15-
<Setter Property="wpf:TextFieldAssist.TextBoxViewMargin" Value="0 0 0 0" />
16-
<Setter Property="Background" Value="Transparent"/>
17-
<Setter Property="CaretBrush" Value="{Binding RelativeSource={RelativeSource Self}, Path=BorderBrush}"/>
18-
<Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst"/>
19-
<Setter Property="Stylus.IsFlicksEnabled" Value="False"/>
20-
<Setter Property="Template">
21-
<Setter.Value>
22-
<ControlTemplate TargetType="{x:Type DatePickerTextBox}">
23-
<Grid>
24-
<Grid.Resources>
25-
<SolidColorBrush x:Key="WatermarkBrush" Color="{TemplateBinding Foreground}"/>
26-
</Grid.Resources>
27-
<VisualStateManager.VisualStateGroups>
28-
<VisualStateGroup x:Name="CommonStates">
29-
<VisualStateGroup.Transitions>
30-
<VisualTransition GeneratedDuration="0"/>
31-
<VisualTransition GeneratedDuration="0:0:0.1" To="MouseOver"/>
32-
</VisualStateGroup.Transitions>
33-
<VisualState x:Name="Normal"/>
34-
<VisualState x:Name="MouseOver"/>
35-
</VisualStateGroup>
36-
<VisualStateGroup x:Name="WatermarkStates">
37-
<VisualStateGroup.Transitions>
38-
<VisualTransition GeneratedDuration="0"/>
39-
</VisualStateGroup.Transitions>
40-
<VisualState x:Name="Unwatermarked"/>
41-
<VisualState x:Name="Watermarked">
42-
<Storyboard>
43-
<DoubleAnimation Duration="0" To=".23" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_Watermark"/>
44-
</Storyboard>
45-
</VisualState>
46-
</VisualStateGroup>
47-
<VisualStateGroup x:Name="FocusStates">
48-
<VisualStateGroup.Transitions>
49-
<VisualTransition GeneratedDuration="0"/>
50-
</VisualStateGroup.Transitions>
51-
<VisualState x:Name="Unfocused"/>
52-
<VisualState x:Name="Focused"/>
53-
</VisualStateGroup>
54-
</VisualStateManager.VisualStateGroups>
14+
<Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(TextElement.Foreground)}" />
15+
<Setter Property="wpf:TextFieldAssist.TextBoxViewMargin" Value="0 0 0 0" />
16+
<Setter Property="Background" Value="Transparent" />
17+
<Setter Property="CaretBrush" Value="{Binding RelativeSource={RelativeSource Self}, Path=BorderBrush}" />
18+
<Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst" />
19+
<Setter Property="Stylus.IsFlicksEnabled" Value="False" />
20+
<Setter Property="Template">
21+
<Setter.Value>
22+
<ControlTemplate TargetType="{x:Type DatePickerTextBox}">
23+
<Grid>
24+
<Grid.Resources>
25+
<SolidColorBrush x:Key="WatermarkBrush" Color="{TemplateBinding Foreground}" />
26+
</Grid.Resources>
27+
<VisualStateManager.VisualStateGroups>
28+
<VisualStateGroup x:Name="CommonStates">
29+
<VisualStateGroup.Transitions>
30+
<VisualTransition GeneratedDuration="0" />
31+
<VisualTransition GeneratedDuration="0:0:0.1" To="MouseOver" />
32+
</VisualStateGroup.Transitions>
33+
<VisualState x:Name="Normal" />
34+
<VisualState x:Name="MouseOver" />
35+
</VisualStateGroup>
36+
<VisualStateGroup x:Name="WatermarkStates">
37+
<VisualStateGroup.Transitions>
38+
<VisualTransition GeneratedDuration="0" />
39+
</VisualStateGroup.Transitions>
40+
<VisualState x:Name="Unwatermarked" />
41+
<VisualState x:Name="Watermarked">
42+
<Storyboard>
43+
<DoubleAnimation Duration="0" To=".23" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_Watermark" />
44+
</Storyboard>
45+
</VisualState>
46+
</VisualStateGroup>
47+
<VisualStateGroup x:Name="FocusStates">
48+
<VisualStateGroup.Transitions>
49+
<VisualTransition GeneratedDuration="0" />
50+
</VisualStateGroup.Transitions>
51+
<VisualState x:Name="Unfocused" />
52+
<VisualState x:Name="Focused" />
53+
</VisualStateGroup>
54+
</VisualStateManager.VisualStateGroups>
5555
<Grid x:Name="WatermarkContent" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
5656
<wpf:SmartHint x:Name="Hint"
5757
FontSize="{TemplateBinding FontSize}"
5858
UseFloating="{Binding Path=(wpf:HintAssist.IsFloating), RelativeSource={RelativeSource TemplatedParent}}"
5959
Hint="{Binding Path=(wpf:HintAssist.Hint), RelativeSource={RelativeSource TemplatedParent}}"
6060
HintProxy="{Binding RelativeSource={RelativeSource TemplatedParent}, Converter={x:Static converters:HintProxyFabricConverter.Instance}}"
61-
HintOpacity="{Binding Path=(wpf:HintAssist.HintOpacity), RelativeSource={RelativeSource TemplatedParent}}"/>
62-
<ContentControl x:Name="PART_Watermark" Focusable="False" IsHitTestVisible="False" Opacity="0" Visibility="Collapsed" />
63-
<ScrollViewer x:Name="PART_ContentHost" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="0" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
64-
</Grid>
61+
HintOpacity="{Binding Path=(wpf:HintAssist.HintOpacity), RelativeSource={RelativeSource TemplatedParent}}" />
62+
<ContentControl x:Name="PART_Watermark" Focusable="False" IsHitTestVisible="False" Opacity="0" Visibility="Collapsed" />
63+
<ScrollViewer x:Name="PART_ContentHost" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="0" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />
64+
</Grid>
6565
</Grid>
6666
<ControlTemplate.Triggers>
6767
<MultiTrigger>
@@ -74,42 +74,42 @@
7474
</MultiTrigger>
7575
</ControlTemplate.Triggers>
7676
</ControlTemplate>
77-
</Setter.Value>
78-
</Setter>
77+
</Setter.Value>
78+
</Setter>
7979
</Style>
8080

8181
<Style x:Key="MaterialDesignDatePickerCalendarPortrait" TargetType="{x:Type Calendar}">
82-
<Setter Property="Foreground" Value="{DynamicResource MaterialDesignBody}"/>
83-
<Setter Property="Background" Value="{DynamicResource MaterialDesignPaper}" />
84-
<Setter Property="CalendarDayButtonStyle" Value="{StaticResource MaterialDesignCalendarDayButton}" />
85-
<Setter Property="CalendarButtonStyle" Value="{StaticResource MaterialDesignCalendarButton}" />
86-
<Setter Property="Template">
87-
<Setter.Value>
88-
<ControlTemplate TargetType="{x:Type Calendar}">
82+
<Setter Property="Foreground" Value="{DynamicResource MaterialDesignBody}" />
83+
<Setter Property="Background" Value="{DynamicResource MaterialDesignPaper}" />
84+
<Setter Property="CalendarDayButtonStyle" Value="{StaticResource MaterialDesignCalendarDayButton}" />
85+
<Setter Property="CalendarButtonStyle" Value="{StaticResource MaterialDesignCalendarButton}" />
86+
<Setter Property="Template">
87+
<Setter.Value>
88+
<ControlTemplate TargetType="{x:Type Calendar}">
8989
<AdornerDecorator CacheMode="{Binding RelativeSource={RelativeSource Self}, Path=(wpf:ShadowAssist.CacheMode)}">
9090
<Border Effect="{DynamicResource MaterialDesignShadowDepth4}" Padding="16 8 16 24">
91-
<CalendarItem x:Name="PART_CalendarItem" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" Style="{DynamicResource MaterialDesignCalendarItemPortrait}"/>
92-
</Border>
91+
<CalendarItem x:Name="PART_CalendarItem" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" Style="{DynamicResource MaterialDesignCalendarItemPortrait}" />
92+
</Border>
9393
</AdornerDecorator>
94-
</ControlTemplate>
95-
</Setter.Value>
96-
</Setter>
97-
</Style>
94+
</ControlTemplate>
95+
</Setter.Value>
96+
</Setter>
97+
</Style>
9898

99-
<Style x:Key="MaterialDesignDatePicker" TargetType="{x:Type DatePicker}">
100-
<Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(TextElement.Foreground)}"/>
101-
<Setter Property="BorderBrush" Value="{DynamicResource MaterialDesignTextBoxBorder}" />
102-
<Setter Property="Background" Value="Transparent"/>
103-
<Setter Property="CalendarStyle" Value="{StaticResource MaterialDesignDatePickerCalendarPortrait}"/>
104-
<Setter Property="IsTodayHighlighted" Value="True"/>
105-
<Setter Property="SelectedDateFormat" Value="Short"/>
106-
<Setter Property="BorderThickness" Value="0 0 0 1"/>
107-
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
99+
<Style x:Key="MaterialDesignDatePicker" TargetType="{x:Type DatePicker}">
100+
<Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(TextElement.Foreground)}" />
101+
<Setter Property="BorderBrush" Value="{DynamicResource MaterialDesignTextBoxBorder}" />
102+
<Setter Property="Background" Value="Transparent" />
103+
<Setter Property="CalendarStyle" Value="{StaticResource MaterialDesignDatePickerCalendarPortrait}" />
104+
<Setter Property="IsTodayHighlighted" Value="True" />
105+
<Setter Property="SelectedDateFormat" Value="Short" />
106+
<Setter Property="BorderThickness" Value="0 0 0 1" />
107+
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
108108
<Setter Property="Margin" Value="0 0 0 0" />
109-
<Setter Property="Validation.ErrorTemplate" Value="{StaticResource MaterialDesignValidationErrorTemplate}"/>
109+
<Setter Property="Validation.ErrorTemplate" Value="{StaticResource MaterialDesignValidationErrorTemplate}" />
110110
<Setter Property="Template">
111-
<Setter.Value>
112-
<ControlTemplate TargetType="{x:Type DatePicker}">
111+
<Setter.Value>
112+
<ControlTemplate TargetType="{x:Type DatePicker}">
113113
<Grid>
114114
<Border BorderBrush="{TemplateBinding BorderBrush}"
115115
BorderThickness="{TemplateBinding BorderThickness}"
@@ -119,10 +119,10 @@
119119
SnapsToDevicePixels="True">
120120
<VisualStateManager.VisualStateGroups>
121121
<VisualStateGroup x:Name="CommonStates">
122-
<VisualState x:Name="Normal"/>
122+
<VisualState x:Name="Normal" />
123123
<VisualState x:Name="Disabled">
124124
<Storyboard>
125-
<DoubleAnimation Duration="0" To=".56" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_Root"/>
125+
<DoubleAnimation Duration="0" To=".56" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_Root" />
126126
</Storyboard>
127127
</VisualState>
128128
</VisualStateGroup>
@@ -137,14 +137,14 @@
137137
<VisualStateManager.VisualStateGroups>
138138
<VisualStateGroup x:Name="CommonStates">
139139
<VisualStateGroup.Transitions>
140-
<VisualTransition GeneratedDuration="0"/>
141-
<VisualTransition GeneratedDuration="0:0:0.1" To="MouseOver"/>
142-
<VisualTransition GeneratedDuration="0:0:0.1" To="Pressed"/>
140+
<VisualTransition GeneratedDuration="0" />
141+
<VisualTransition GeneratedDuration="0:0:0.1" To="MouseOver" />
142+
<VisualTransition GeneratedDuration="0:0:0.1" To="Pressed" />
143143
</VisualStateGroup.Transitions>
144-
<VisualState x:Name="Normal"/>
145-
<VisualState x:Name="MouseOver"/>
146-
<VisualState x:Name="Pressed"/>
147-
<VisualState x:Name="Disabled"/>
144+
<VisualState x:Name="Normal" />
145+
<VisualState x:Name="MouseOver" />
146+
<VisualState x:Name="Pressed" />
147+
<VisualState x:Name="Disabled" />
148148
</VisualStateGroup>
149149
</VisualStateManager.VisualStateGroups>
150150
<Viewbox>
@@ -156,8 +156,8 @@
156156
</ControlTemplate>
157157
</Grid.Resources>
158158
<Grid.ColumnDefinitions>
159-
<ColumnDefinition Width="*"/>
160-
<ColumnDefinition Width="Auto"/>
159+
<ColumnDefinition Width="*" />
160+
<ColumnDefinition Width="Auto" />
161161
</Grid.ColumnDefinitions>
162162
<Button x:Name="PART_Button"
163163
Grid.Column="1"
@@ -176,37 +176,40 @@
176176
VerticalContentAlignment="Center"
177177
Style="{DynamicResource MaterialDesignDatePickerTextBox}"
178178
HorizontalAlignment="Stretch" />
179-
<Popup x:Name="PART_Popup" AllowsTransparency="True"
179+
<Popup x:Name="PART_Popup" AllowsTransparency="True"
180180
Placement="Custom"
181181
CustomPopupPlacementCallback="{x:Static wpf:CustomPopupPlacementCallbackHelper.LargePopupCallback}"
182182
PlacementTarget="{Binding ElementName=PART_TextBox}" StaysOpen="False"
183-
PopupAnimation="Fade" />
183+
PopupAnimation="Fade" />
184184
</Grid>
185185
</Border>
186-
<wpf:Underline x:Name="Underline" Visibility="{Binding Path=(wpf:TextFieldAssist.DecorationVisibility), RelativeSource={RelativeSource TemplatedParent}}"/>
186+
<wpf:Underline x:Name="Underline" Visibility="{Binding Path=(wpf:TextFieldAssist.DecorationVisibility), RelativeSource={RelativeSource TemplatedParent}}" />
187187
</Grid>
188188
<ControlTemplate.Triggers>
189-
<Trigger Property="IsEnabled" Value="false">
190-
<Setter Property="Opacity" TargetName="border" Value="0.56"/>
191-
</Trigger>
192-
<Trigger Property="IsMouseOver" Value="true">
193-
<Setter Property="BorderBrush" Value="{DynamicResource PrimaryHueMidBrush}"/>
194-
</Trigger>
195-
<Trigger Property="IsKeyboardFocusWithin" Value="true">
196-
<Setter TargetName="Underline" Property="IsActive" Value="True"/>
197-
<Setter Property="BorderBrush" Value="{DynamicResource PrimaryHueMidBrush}"/>
198-
</Trigger>
199-
<Trigger Property="Validation.HasError" Value="true">
200-
<Setter Property="BorderBrush" Value="{DynamicResource ValidationErrorBrush}"/>
201-
<Setter TargetName="Underline" Property="Background" Value="{DynamicResource ValidationErrorBrush}"/>
202-
</Trigger>
203-
</ControlTemplate.Triggers>
204-
</ControlTemplate>
205-
</Setter.Value>
206-
</Setter>
207-
</Style>
189+
<Trigger Property="IsEnabled" Value="false">
190+
<Setter Property="Opacity" TargetName="border" Value="0.56" />
191+
</Trigger>
192+
<Trigger Property="IsMouseOver" Value="true">
193+
<Setter Property="BorderBrush" Value="{DynamicResource PrimaryHueMidBrush}" />
194+
</Trigger>
195+
<Trigger Property="IsKeyboardFocusWithin" Value="true">
196+
<Setter TargetName="Underline" Property="IsActive" Value="True" />
197+
<Setter Property="BorderBrush" Value="{DynamicResource PrimaryHueMidBrush}" />
198+
</Trigger>
199+
<Trigger Property="Validation.HasError" Value="true">
200+
<Setter Property="BorderBrush" Value="{DynamicResource ValidationErrorBrush}" />
201+
<Setter TargetName="Underline" Property="Background" Value="{DynamicResource ValidationErrorBrush}" />
202+
</Trigger>
203+
<Trigger Property="wpf:HintAssist.IsFloating" Value="True">
204+
<Setter TargetName="border" Property="Margin" Value="0 12 0 0" />
205+
</Trigger>
206+
</ControlTemplate.Triggers>
207+
</ControlTemplate>
208+
</Setter.Value>
209+
</Setter>
210+
</Style>
208211

209212
<Style x:Key="MaterialDesignFloatingHintDatePicker" TargetType="{x:Type DatePicker}" BasedOn="{StaticResource MaterialDesignDatePicker}">
210-
<Setter Property="wpf:HintAssist.IsFloating" Value="True"/>
213+
<Setter Property="wpf:HintAssist.IsFloating" Value="True" />
211214
</Style>
212215
</ResourceDictionary>

0 commit comments

Comments
 (0)