我有一個類,名爲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