在我的示例中,我想在WPF的日期选择器中显示默认值,例如“ ...”。
我使用了一个后备值,但只会显示日期时间值。但是我需要一个空值,如何实现呢?
答案 0 :(得分:0)
在WPF DatePicker中,默认文本“ Select a date
”是作为DatePicker的子控件附加的水印。如果要显示默认文本,例如“ ...”,则必须找到“ PART_Watermark” ContentControl(它是DataPicker的子级)并更改其Content。
您可以在给定的参考链接中参考Matt Hamilton的代码:
如果要通过单击某些Button以编程方式进行操作,请检查以下代码:-
void ChangeDatePickerWaterMark()
{
var dp = datePicker as DatePicker; //datePicker is your control name
if (dp == null) return;
var tb = GetChildOfType<DatePickerTextBox>(dp);
if (tb == null) return;
var wm = tb.Template.FindName("PART_Watermark", tb) as ContentControl;
if (wm == null) return;
wm.Content = "...";
}
public static T GetChildOfType<T>(DependencyObject depObj) where T : DependencyObject
{
if (depObj == null) return null;
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
{
var child = VisualTreeHelper.GetChild(depObj, i);
var result = (child as T) ?? GetChildOfType<T>(child);
if (result != null) return result;
}
return null;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
ChangeDatePickerWaterMark();
}
答案 1 :(得分:0)
如果你只是想去除水印文字“选择日期”,你可以使用一个样式,当 Text 属性为空时,将 Opacity 属性设置为零。
<Style TargetType="{x:Type DatePickerTextBox}">
<Style.Triggers>
<Trigger Property="Text" Value="">
<Setter Property="Opacity" Value="0"/>
</Trigger>
</Style.Triggers>
</Style>