PaN*_*1Me 10 datepicker wpftoolkit
我正在使用最新的WPF工具包,特别是DatePicker.一切正常,但是当没有提供任何值时,默认的"SHOW CALENDAR"文本出现在DatePickerTextBox中.我希望能够在WPF中更改此值.
一个告诉我下载源代码,添加一个新的Dependency属性并重新编译为dll.这很酷但是如果新版本发布会怎么样?
这就是为什么我想以这种方式模板化这个控件,我将能够覆盖这个默认字符串.知道怎么做吗?
谢谢!
PaN*_*1Me 22
好.我自己找到了解决方案.
<Style TargetType="{x:Type toolkit:DatePickerTextBox}">
<Setter Property="Text" Value="Bitte wählen" />
</Style>
Run Code Online (Sandbox Code Playgroud)
无论如何,你必须意识到这样一个事实,即有一个名为Watermark的DependencyProperty应该被设置来代替Text.
问题是,随着最新的MS发布(大约在2009年6月),他们因为一些未知的原因而只读了这个属性.这意味着,这是我组建的唯一黑客,虽然发生了首次异常,因为DatePicker试图解析字符串(他假设文本是一个日期),但通常你不会注意到它.
另一种可能性是直接编辑从MS源代码和覆盖的SetWaterMark()方法+添加自己的依赖项属性(MyWaterMark或东西).但是你不能使用提供的dll.他们说,随着.NET 4的发布,我们将会看到它.
小智 6
void _datePicker1_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
if (_datePicker1.SelectedDate != null) return;
FieldInfo fiTextBox = typeof(DatePicker)
.GetField("_textBox", BindingFlags.Instance | BindingFlags.NonPublic);
if (fiTextBox != null)
{
DatePickerTextBox dateTextBox =
(DatePickerTextBox)fiTextBox.GetValue(_datePicker1);
if (dateTextBox != null)
{
PropertyInfo piWatermark = dateTextBox.GetType()
.GetProperty("Watermark", BindingFlags.Instance | BindingFlags.NonPublic);
if (piWatermark != null)
{
piWatermark.SetValue(dateTextBox, "", null);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
你需要使用相同的代码连接Load事件.
| 归档时间: |
|
| 查看次数: |
26751 次 |
| 最近记录: |