我有一个名为 的类DateField
,它有一个字符串Value
属性。如果将此属性设置为可以解析为有效日期的字符串,则属性设置器会设置Value
为格式正确的日期,例如:
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");
}
}
我创建了一个绑定到该字段的 TextBox:
<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
;我还需要做什么?