下面是尝试子类化 4.0 DatePicker 的一段代码。我想这样做的原因之一是为了更好地控制水印。这里发生的情况是,我获得了 DatePickerTextBox 的句柄,但没有获得 PART_Watermark(它为空)。
ApplyTemplate 是执行此操作的正确位置吗?我必须修复什么才能获得水印?
干杯,
贝里尔
public class DatePickerEx : DatePicker
{
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
var datePickerTextBox = GetTemplateChild("PART_TextBox") as DatePickerTextBox;
if (datePickerTextBox == null) return;
var watermarkPart = datePickerTextBox.Template.FindName("PART_Watermark", datePickerTextBox) as ContentControl;
if (watermarkPart == null) return;
...
}
}
最佳答案
我对日期选择器了解不多,但如果 PART_TextBox
有自己的模板,并且 PART_Watermark
是该模板的一部分,则应该调用 ApplyTemplate
在文本框上,然后才能访问其模板部分。
希望有帮助。
关于wpf - DatePicker子类找不到模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11298484/