2

下面是一段尝试继承 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;

        ...        
     }
}
4

1 回答 1

2

我对日期选择器不太了解,但如果PART_TextBox有自己的模板并且PART_Watermark是该模板的一部分,您应该先调用ApplyTemplate文本框,然后才能访问其模板部分。

希望能帮助到你。

于 2012-09-04T19:17:00.363 回答