Value
という文字列を持つDateField
というクラスがあります。あなたが有効な日付に解析できる文字列にこのプロパティを設定すると、プロパティのセッターは、例えば、適切にフォーマットされた日付に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
;私は何をする必要がありますか?
完了;詳細は私の答えを見てください。 –