I don't want the "SELECT DATE" message in the DatePicker

I don't need to display "Select Date" in the DatePicker textbox, but I want to see something like this / / ____ or other text.

This is my RESOURCE

<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<Style x:Key="ABC" TargetType="DatePicker">
    <Setter Property="Foreground" Value="#FF333333" />
    <Setter Property="IsTodayHighlighted" Value="True" />
    <Setter Property="SelectedDateFormat" Value="Short" />
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="DisplayDateStart" Value=" 01/01/1990" />
    <Setter Property="DisplayDateEnd" Value="12/31/2090" />        
    <Setter Property="Padding" Value="2"/>
    <Setter Property="FontFamily" Value="Verdana" />
    <Setter Property="FontSize" Value="14" />

    <Setter Property="BorderThickness" Value="1" />
    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    <Setter Property="HorizontalAlignment" Value ="Center" />
    <Setter Property="VerticalAlignment" Value= "Center" />

    <Setter Property = "Text" Value="{x:Null}" />
    <Setter Property = "SelectedDate" Value="{x:Null}" />

    <Style.Triggers>
        <Trigger Property ="IsMouseOver" Value="True">
            <Setter Property= "Background" Value="Coral"/>
        </Trigger>

        <Trigger Property="IsFocused" Value="True">
            <Setter Property= "Background" Value="LemonChiffon"/>
        </Trigger>

    </Style.Triggers>
</Style>

      

+3


source to share


2 answers


You can change the default template for DatePickerTextBox

The thing to change is ContentControl 'PART_Watermark'. The code for the DatePicker sets the Content property of this control, so we can't just change the content. Instead, override the ControlTemplate for that control and just create a TextBlock with the text you want.

<ContentControl x:Name="PART_Watermark"
                    Opacity="0"
                    Focusable="False"
                    IsHitTestVisible="False"
                    Padding="2">
    <ContentControl.Template>
        <ControlTemplate>
            <TextBlock Text="//____"/>
        </ControlTemplate>
    </ContentControl.Template>
</ContentControl>

      



Everybody is here:

<Style TargetType="{x:Type DatePickerTextBox}">
    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}" />
    <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" />
    <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst"/>
    <Setter Property="Stylus.IsFlicksEnabled" Value="False"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="DatePickerTextBox">
                <Grid>
                    <Grid.Resources>
                        <SolidColorBrush x:Key="WatermarkBrush" Color="#FFAAAAAA"/>
                    </Grid.Resources>
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup Name="CommonStates">
                            <VisualStateGroup.Transitions>
                                <VisualTransition GeneratedDuration="0" />
                                <VisualTransition To="MouseOver" GeneratedDuration="0:0:0.1" />
                            </VisualStateGroup.Transitions>
                            <VisualState Name="Normal" />
                            <VisualState Name="MouseOver">
                                <Storyboard>
                                    <ColorAnimation Storyboard.TargetName="ContentElement" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" To="#FF99C1E2" Duration="0"/>
                                    <ColorAnimation Storyboard.TargetName="watermark_decorator" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" To="#FF99C1E2" Duration="0"/>
                                </Storyboard>
                            </VisualState>
                        </VisualStateGroup>
                        <VisualStateGroup Name="WatermarkStates">
                            <VisualStateGroup.Transitions>
                                <VisualTransition GeneratedDuration="0" />
                            </VisualStateGroup.Transitions>
                            <VisualState Name="Unwatermarked" />
                            <VisualState Name="Watermarked">
                                <Storyboard>
                                    <DoubleAnimation Storyboard.TargetName="ContentElement" Storyboard.TargetProperty="Opacity" To="0" Duration="0" />
                                    <DoubleAnimation Storyboard.TargetName="PART_Watermark" Storyboard.TargetProperty="Opacity" To="1" Duration="0" />
                                </Storyboard>
                            </VisualState>
                        </VisualStateGroup>
                        <VisualStateGroup Name="FocusStates">
                            <VisualStateGroup.Transitions>
                                <VisualTransition GeneratedDuration="0" />
                            </VisualStateGroup.Transitions>
                            <VisualState Name="Unfocused" />
                            <VisualState Name="Focused">
                                <Storyboard>
                                    <DoubleAnimation Storyboard.TargetName="FocusVisual" Storyboard.TargetProperty="Opacity" To="1" Duration="0" />
                                </Storyboard>
                            </VisualState>
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>


                    <Border x:Name="Border" 
                            Background="{TemplateBinding Background}" 
                            BorderBrush="{TemplateBinding BorderBrush}" 
                            BorderThickness="{TemplateBinding BorderThickness}"
                            Padding="{TemplateBinding Padding}"
                            CornerRadius="1" 
                            Opacity="1">
                        <Grid x:Name="WatermarkContent"
                              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                              VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
                            <Border x:Name="ContentElement" BorderThickness="1">
                                <Border.BorderBrush>
                                    <SolidColorBrush Color="#FFFFFFFF"/>
                                </Border.BorderBrush>
                            </Border>
                            <Border x:Name="watermark_decorator" BorderThickness="1">
                                <Border.BorderBrush>
                                    <SolidColorBrush Color="#FFFFFFFF"/>
                                </Border.BorderBrush>
                                <ContentControl x:Name="PART_Watermark"
                                                    Opacity="0"
                                                    Focusable="False"
                                                    IsHitTestVisible="False"
                                                    Padding="2">
                                    <ContentControl.Template>
                                        <ControlTemplate>
                                            <TextBlock Text="//____"/>
                                        </ControlTemplate>
                                    </ContentControl.Template>
                                </ContentControl>
                            </Border>
                            <ScrollViewer x:Name="PART_ContentHost" 
                                          Margin="0"
                                          HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                                          VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />
                            <Border x:Name="FocusVisual" BorderBrush="#FF45D6FA" CornerRadius="1" Opacity="0" IsHitTestVisible="False"/>
                        </Grid>
                    </Border>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

      

+6


source


This is another solution from code

public class CustomWatermarkedDatePicker : DatePicker
{
    public override void OnApplyTemplate()
    {
        base.OnApplyTemplate();

        DatePickerTextBox box = base.GetTemplateChild("PART_TextBox") as DatePickerTextBox;
        box.ApplyTemplate();

        ContentControl watermark = box.Template.FindName("PART_Watermark", box) as ContentControl;
        watermark.Content = "Custom Text";
    }
}

      



Hope it helps.

+4


source







All Articles