XAMLのラベルコンテンツを人の生年月日であるDatePickerにバインドして、年齢を取得します。例:日付ピッカー:2000.1.1ラベル:16. どうすればよいですか?WPF DatePickerをバインディングにバインドして人の年齢を取得する
編集
ラベルは、直ちに時に日付ピッカーの変更を変更する必要があります。次のようなIValueConverter実装を使用して、ラベルバインド
XAMLのラベルコンテンツを人の生年月日であるDatePickerにバインドして、年齢を取得します。例:日付ピッカー:2000.1.1ラベル:16. どうすればよいですか?WPF DatePickerをバインディングにバインドして人の年齢を取得する
編集
ラベルは、直ちに時に日付ピッカーの変更を変更する必要があります。次のようなIValueConverter実装を使用して、ラベルバインド
:
class BirthdateToAgeConverter : IValueConverter
{
public object Convert
(
object value,
Type targetType,
object parameter,
string language)
{
var birthdate = ((DateTime) value).Date;
var age = DateTime.Today.Year - birthdate.Year;
if (birthdate > DateTime.Today.AddYears(-age))
{
age--;
}
return age;
}
public object ConvertBack
(
object value,
Type targetType,
object parameter,
string language)
{
throw new NotImplementedException();
}
}
編集: あなたのXAMLでは、あなたが日付ピッカーに直接結合している場合には結合パスを定義する必要があります。 ViewModelのSzuletesiDatumにバインドすることもできます。
<Label Content="{Binding ElementName=dtPicker, Path=SelectedDate ,Converter={StaticResource DTKC}}"
HorizontalAlignment="Left" Margin="356,94,0,0"
VerticalAlignment="Top"/>
<DatePicker x:Name="dtPicker"
SelectedDate="{Binding SzuletesiDatum}"
HorizontalAlignment="Left"
Margin="112,94,0,0"
VerticalAlignment="Top"/>
Thx、私はそれをコピーしましたが、まだ私はxamlに何を書き込むのか分かりません。 <ラベル内容= "{バインディング要素名= dtPicker、コンバータ= {スタティックリソースDTKC}}" HorizontalAlignment = "Left" Margin = "356,94,0,0" VerticalAlignment = "Top" />
バインディングパスを設定しません。私の編集を参照してください。 –
ありがとうございます、それは動作していますが、 "Object referenceがオブジェクトのインスタンスに設定されていません\t"というエラーが表示され、xamlコードの先頭に "Window"が下線を引いています。この部分を削除すると消えるだけです:Converter = {StaticResource DTKC} –
要素バインディングを使用してラベルをコントロールにバインドし、IConvertorの実装を追加すると、日付が取得され、年齢が返されます。 – kidshaw
あなたは誕生日をコンバータでバインドする必要があります。 – ChrisF