wpf - DatePicker子类找不到模板

标签 wpf xaml datepicker custom-controls

下面是尝试子类化 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/

相关文章:

wpf - 为什么访问我的 Storyboard x :Name work in Silverlight but not in WPF?

.net - 当属性 Visibility 更改时为 StackPanel 设置动画

c# - 更改文本 block 中部分文本的颜色

android - Xamarin Forms 自定义字体不适用于 UWP(适用于 Android)

jquery - chrome 中 jQuery UI datepicker 的问题

wpf - WPF Wrap 面板以何种方式较慢,我们需要虚拟 wrap 面板

c# - 使 ListBox 大小适合用作 ItemsPresenter 的 ItemsPanel

c# - 在 Windows Phone 8.1 中的单独文本 block 上检索 PHP 数据

java - 按时区在 DatePicker 中设置 "today date"(Android)

objective-c - Objective C 比较 NSDate 中的两个日期字符串