我有一个类,名为DateField
,它具有字符串Value
属性。如果将此属性设置为可以被解析成一个有效日期的字符串,该属性设置器Value
到正确格式化的日期,例如:WPF双向绑定:我如何使用它刚刚设置的值的格式化版本更新TextBox?
private string _Value;
public string Value
{
get
{
return _Value;
}
set
{
if (value == _Value)
{
return;
}
object result;
if (TryParse(value, out result))
{
_Value = Format(result);
}
else
{
_Value = value;
}
OnPropertyChanged("Value");
}
}
我创建一个绑定到该领域的文本框:
<DataTemplate DataType="{x:Type m:DateField}">
<TextBox
IsTabStop="True"
Text="{Binding Value, Mode=TwoWay, ValidatesOnDataErrors=True}">
</TextBox>
</DataTemplate>
当我在此字段中输入"010109"
并将其选中时,Binding
将Value
属性适当地设置为此字符串。属性设置器运行时,_Value
被正确设置为"01/01/2009"
(该类中的TryParse
实现在它接受的内容上比在DateTime.TryParse
更接近天主教),并且PropertyChanged
事件得到提升。我知道最后一点发生了,因为订阅了列表的另一个对象被更新了。
但是TextBox
没有。为什么不?我已经设置了Value
,我已经提出了PropertyChanged
;我还需要做些什么?
完成;详情请参阅我的答案。 – 2009-09-03 22:09:05