#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}