您的位置:首页 > 其它

WPF DatePicker 添加水印效果

2014-08-25 19:39 323 查看
这个控件没有水印属性,依然使用依赖属性解决

public class DatePickerHelper
{
public static object GetWatermark(DependencyObject obj)
{
return (object)obj.GetValue(WatermarkProperty);
}

public static void SetWatermark(DependencyObject obj, object value)
{
obj.SetValue(WatermarkProperty, value);
}

// Using a DependencyProperty as the backing store for Watermark.  This enables animation, styling, binding, etc...
public static readonly DependencyProperty WatermarkProperty =
DependencyProperty.RegisterAttached("Watermark", typeof(object), typeof(DatePickerHelper),
new FrameworkPropertyMetadata(null,
new PropertyChangedCallback(OnWatermarkChanged)));

private static void OnWatermarkChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var datePicker = d as DatePicker;
if (datePicker == null)
return;
if (datePicker.IsLoaded)
{
SetWatermarkInternal(datePicker, e.NewValue);
}
else
{
RoutedEventHandler loadedHandler = null;
loadedHandler = delegate
{
datePicker.Loaded -= loadedHandler;
SetWatermarkInternal(datePicker, e.NewValue);
};
datePicker.Loaded += loadedHandler;
}
}
private static void SetWatermarkInternal(DatePicker d, object value)
{
var textBox = d.Template.FindName("PART_TextBox", d) as Control;
if (textBox != null)
{
var watermarkControl = textBox.Template.FindName("PART_Watermark", textBox) as ContentControl;
if (watermarkControl != null)
watermarkControl.Content = value;
}
}
}


使用:

<DatePicker helper:DatePickerHelper.Watermark="Start Date" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: