Themes/MaterialDesignTheme.DatePicker.xaml
<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: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="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)}" /> <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> |