public 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; } void DatePicker_Loaded(object sender, RoutedEventArgs e) { var dp = sender as DatePicker; 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 = "选择日期"; }
总体思路就是在DataPicker加载完成后,在控件树上找到水印的控件,然后将Content设为中文文字