依赖DependencyProperty

时间:2016-01-29 19:25:38

标签: wpf data-binding dependency-properties

我想创建一个依赖项属性,其值依赖于其他依赖项属性,但仍然可设置/可写。例如,'DateOfBirth'是一个独立的DependencyProperty。现在我想创建另一个名为YearOfBirth的DependencyProperty。当DateOfBirth with Change它将强制YearOfBirth属性的值。即d。CoerceValue(YearOfBirthProperty)。

但是如何使依赖依赖属性(例如YearOfBirth)可写/可设置?

如果我使用CLR属性编码,它可以正常工作,但如何使用依赖属性!

1 个答案:

答案 0 :(得分:0)

这个怎么样:

    public partial class MainWindow : Window
{
    public static DependencyProperty DateofBirthProperty = DependencyProperty.Register("DateofBirth", typeof(DateTime), typeof(MainWindow), new FrameworkPropertyMetadata(new PropertyChangedCallback(DateofBirth_Changed)));

    public DateTime DateofBirth
    {
        get { return (DateTime)GetValue(DateofBirthProperty); }
        set { SetValue(DateofBirthProperty, value); }
    }


    private static void DateofBirth_Changed(DependencyObject o, DependencyPropertyChangedEventArgs args)
    {
        MainWindow thisClass = (MainWindow)o;
        thisClass.SetDateofBirth();
    }

    private void SetDateofBirth()
    {
        DOBYear = DateofBirth.Year;
    }

    public static DependencyProperty DOBYearProperty = DependencyProperty.Register("DOBYear", typeof(int), typeof(MainWindow), new FrameworkPropertyMetadata(new PropertyChangedCallback(DOBYear_Changed)));

    public int DOBYear
    {
        get { return (int)GetValue(DOBYearProperty); }
        set { SetValue(DOBYearProperty, value); }
    }


    private static void DOBYear_Changed(DependencyObject o, DependencyPropertyChangedEventArgs args)
    {
        MainWindow thisClass = (MainWindow)o;
        thisClass.SetDOBYear();
    }

    private void SetDOBYear()
    {
        //Put Instance DOBYear Property Changed code here
    }


    public MainWindow()
    {
        InitializeComponent();
    }
}
相关问题