这个方法主要是通过修改水印的位置来显示周的开始和结束时间。
private void DatePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e) { var dp = sender as DatePicker; if (dp == null) return; if (dp.SelectedDate != null) { 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 = null; // This is a part where watermark is set to null, so no text will be displayed wm.Content = GetWeekNumber((DateTime)this.DatePicker.SelectedDate); dp.SelectedDate = null; } }
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; }