c#WPF DatePicker to Label Binding,以获得一个人的年龄

时间:2016-10-22 16:35:38

标签: c# wpf binding

我的工作是将XAML中的标签Content绑定到DatePicker,这是一个人的出生日期,以获得他们的年龄。例如:日期选择器:2000.1.1标签:16。 我该怎么做?

修改

当DatePicker发生变化时,标签需要立即更改。

1 个答案:

答案 0 :(得分:0)

使用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,则需要定义绑定路径。您还可以在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"/>