c # WPF DatePicker для обозначения привязки, чтобы получить возраст людей

#c# #wpf #binding

#c# #wpf #привязка

Вопрос:

Моя задача — привязать содержимое ярлыков в XAML к DatePicker, который является датой рождения людей, чтобы получить их возраст. Например: Средство выбора даты: 2000.1.1 Метка: 16. Как мне это сделать?

Редактировать

Метку необходимо изменить немедленно при изменении DatePicker.

Комментарии:

1. Посмотрите на привязку метки к элементу управления с помощью привязки элемента и добавьте реализацию IConvertor, которая принимает дату и возвращает возраст.

2. Вам нужно привязать дату их рождения с помощью конвертера.

Ответ №1:

Привяжите свою метку, используя реализацию 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 вам нужно определить путь привязки, если вы привязываетесь непосредственно к DatePicker. Вы также могли бы выполнить привязку к SULETESIDATUM в вашей ViewModel.

 <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"/>
  

Комментарии:

1. Спасибо, я скопировал это, но все еще не знаю, что записать в xaml. <Содержимое метки =»{Имя элемента привязки=DTPicker ,Конвертер ={StaticResource DTKC}}» Горизонтальное выравнивание=»Левое» поле=»356,94,0,0″ Вертикальное выравнивание=»Верх»/> <DatePicker x:Name=»DTPicker» selectedDate=»{Значение параметра привязки}» Горизонтальное выравнивание=»Левое» поле =» 112,94,0,0 » Вертикальное выравнивание=»Top»/> Не работает

2. Спасибо, это работает, но теперь выдает ошибку следующего содержания: «Ссылка на объект не установлена для экземпляра объекта. » и подчеркивает «Окно» в начале кода xaml. Это исчезает только тогда, когда я удаляю эту часть: ,Converter={StaticResource DTKC}