DatePicker子类找不到模板

时间:2012-07-02 17:37:32

标签: wpf xaml datepicker custom-controls

下面是尝试继承4.0 DatePicker的一段代码。我想这样做的原因之一是对水印有更多的控制权。这里发生的是我得到了DatePickerTextBox的句柄,但是我没有得到PART_Watermark(它是null)。

ApplyTemplate是否适合这样做?我必须修复什么才能获得水印?

干杯,
Berryl

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;

        ...        
     }
}

1 个答案:

答案 0 :(得分:2)

我对日期选择器知之甚少,但如果PART_TextBox有自己的模板且PART_Watermark是该模板的一部分,则应在文本框中调用ApplyTemplate您可以访问其模板部件。

希望它有所帮助。