Vb.net 有没有办法更改日期选择器中显示的文本?而不是",;选择一个日期";,给我看些别的?

Vb.net 有没有办法更改日期选择器中显示的文本?而不是",;选择一个日期";,给我看些别的?,vb.net,visual-studio,xaml,Vb.net,Visual Studio,Xaml,我想让日期选择器向用户提示一条与我的日期选择器的“选择日期”不同的消息。我最好有一个resx条目来确定显示的值,因此是否有日期选择器的属性可以设置为显示不同的开始消息?我可以自己处理问题的resx部分,我只需要帮助我确定要设置什么属性 我尝试使用datepicker.Text=“输入日期”,只是作为测试,但它不显示字符串 以下是日期选择器的xaml标记: <DatePicker Height="28" HorizontalAlignment="Left" Margin="515,55.66

我想让
日期选择器
向用户提示一条与我的
日期选择器
的“选择日期”不同的消息。我最好有一个resx条目来确定显示的值,因此是否有
日期选择器的属性可以设置为显示不同的开始消息?我可以自己处理问题的resx部分,我只需要帮助我确定要设置什么属性

我尝试使用
datepicker.Text=“输入日期”
,只是作为测试,但它不显示字符串

以下是
日期选择器的xaml标记:

<DatePicker Height="28" HorizontalAlignment="Left" Margin="515,55.661,0,0" Name="dtpStartDate" VerticalAlignment="Top" Width="180" FontSize="16" Background="White" SelectedDateFormat="Short" TabIndex="20"/>
<TextBlock Text="{x:Static local:AppResources.HelloWorld}">
    <TextBlock.Style>
        <Style TargetType="TextBlock">
            <Setter Property="Visibility" Value="Collapsed" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding SelectedDate, RelativeSource={RelativeSource AncestorType=DatePicker}}" 
                             Value="{x:Null}">
                    <Setter Property="Visibility" Value="Visible" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

您可以定义一个隐式
日期选择器文本框
样式,在其中隐藏名为“PART\u水印”的
内容控件
,并使用自定义文本添加一个
文本块

<DatePicker Height="28" HorizontalAlignment="Left" Margin="515,55.661,0,0" Name="dtpStartDate"
            VerticalAlignment="Top" Width="180" FontSize="16" Background="White" 
            SelectedDateFormat="Short" TabIndex="20">
    <DatePicker.Resources>
        <Style TargetType="DatePickerTextBox">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type DatePickerTextBox}">
                        <Grid>
                            <Grid.Resources>
                                <SolidColorBrush x:Key="WatermarkBrush" Color="#FFAAAAAA"/>
                            </Grid.Resources>
                            <VisualStateManager.VisualStateGroups>
                                <VisualStateGroup x:Name="CommonStates">
                                    <VisualStateGroup.Transitions>
                                        <VisualTransition GeneratedDuration="0"/>
                                        <VisualTransition GeneratedDuration="0:0:0.1" To="MouseOver"/>
                                    </VisualStateGroup.Transitions>
                                    <VisualState x:Name="Normal"/>
                                    <VisualState x:Name="MouseOver">
                                        <Storyboard>
                                            <ColorAnimation Duration="0" To="#FF99C1E2" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" Storyboard.TargetName="ContentElement"/>
                                            <ColorAnimation Duration="0" To="#FF99C1E2" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" Storyboard.TargetName="watermark_decorator"/>
                                        </Storyboard>
                                    </VisualState>
                                </VisualStateGroup>
                                <VisualStateGroup x:Name="WatermarkStates">
                                    <VisualStateGroup.Transitions>
                                        <VisualTransition GeneratedDuration="0"/>
                                    </VisualStateGroup.Transitions>
                                    <VisualState x:Name="Unwatermarked"/>
                                    <VisualState x:Name="Watermarked">
                                        <Storyboard>
                                            <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="ContentElement"/>
                                            <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_Watermark"/>
                                        </Storyboard>
                                    </VisualState>
                                </VisualStateGroup>
                                <VisualStateGroup x:Name="FocusStates">
                                    <VisualStateGroup.Transitions>
                                        <VisualTransition GeneratedDuration="0"/>
                                    </VisualStateGroup.Transitions>
                                    <VisualState x:Name="Unfocused"/>
                                    <VisualState x:Name="Focused">
                                        <Storyboard>
                                            <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="FocusVisual"/>
                                        </Storyboard>
                                    </VisualState>
                                </VisualStateGroup>
                            </VisualStateManager.VisualStateGroups>
                            <Border x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="1" Opacity="1" Padding="{TemplateBinding Padding}">
                                <Grid x:Name="WatermarkContent" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
                                    <Border x:Name="ContentElement" BorderBrush="#FFFFFFFF" BorderThickness="1"/>
                                    <Border x:Name="watermark_decorator" BorderBrush="#FFFFFFFF" BorderThickness="1">
                                        <Grid>
                                            <ContentControl x:Name="PART_Watermark" Focusable="False" IsHitTestVisible="False" Opacity="0" Padding="2" Visibility="Collapsed"/>
                                            <TextBlock Text="custom..." />
                                        </Grid>
                                    </Border>
                                    <ScrollViewer x:Name="PART_ContentHost" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="0" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
                                    <Border x:Name="FocusVisual" BorderBrush="#FF45D6FA" CornerRadius="1" IsHitTestVisible="False" Opacity="0"/>
                                </Grid>
                            </Border>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </DatePicker.Resources>
</DatePicker>

唯一的问题是,当我选择一个日期时,水印会保留并被日期覆盖。有办法解决这个问题吗

说得好。您可以将
样式
应用于
文本块
,并使用
数据触发器
绑定到
日期选择器的
SelectedDate
属性:

<DatePicker Height="28" HorizontalAlignment="Left" Margin="515,55.661,0,0" Name="dtpStartDate" VerticalAlignment="Top" Width="180" FontSize="16" Background="White" SelectedDateFormat="Short" TabIndex="20"/>
<TextBlock Text="{x:Static local:AppResources.HelloWorld}">
    <TextBlock.Style>
        <Style TargetType="TextBlock">
            <Setter Property="Visibility" Value="Collapsed" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding SelectedDate, RelativeSource={RelativeSource AncestorType=DatePicker}}" 
                             Value="{x:Null}">
                    <Setter Property="Visibility" Value="Visible" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>


这不是您应该如何使用XAML的。我强烈建议您学习使用XAML,并尽快远离设计师。这将使你的生活在未来变得更加轻松。你必须告诉我的主管,因为这不是我的代码。我只是在努力。这怎么不正确?它可以完美地显示所需的所有内容。它不使用laguage提供的布局功能,而是使用硬定义的边框。如果调整应用程序的大小,它将无法按用户的预期工作。为了实现你的目标,你需要修改datepicker的原始模板。请参考以下内容:想象一辆汽车向后行驶。你可以说“为什么这样做不好?它会让我去任何它想去的地方!”事实上你是对的,但这并不意味着按照设计的方式使用汽车会让你的生活变得更好、更舒适,并延长汽车/软件的使用寿命。所以,请告诉你的主管,他正在倒车。好的,这不是问题,因为他们不允许调整此应用程序的大小。我明白你的意思,理想情况下,我们应该制作一个完美的应用程序,但说实话,这个应用程序并不是顶级材料,也不会是。我们只需要它做最低限度的工作。另外,谢谢你的链接!唯一的问题是,当我选择一个日期时,水印会保留并被日期覆盖。有没有办法解决这个问题?@BrenCou:你可以对
文本块使用
样式
。请看我的编辑。事实上,我发现@BenjaminKrupp的答案非常有帮助。他更新了原件以解释这个问题。谢谢你的解决方案!