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
; 私はこれ以上何をする必要がありますか?