Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 从属财产_Wpf_Data Binding_Dependency Properties - Fatal编程技术网

Wpf 从属财产

Wpf 从属财产,wpf,data-binding,dependency-properties,Wpf,Data Binding,Dependency Properties,我想创建一个依赖属性,其值依赖于其他依赖属性,但仍然可以设置/写入。例如,“DateOfBirth”是一个独立的名称。现在我想制作另一个名为YearOfBirth的DependencyProperty。当DateOfBirth带有Change时,它将强制使用YearOfBirth属性的值。i、 e.d.(出生财产年) 但是,如何使依赖依赖项属性(例如出生年份)可写/可设置 如果我使用CLR属性编写代码,它可以正常工作,但如何使用依赖属性呢 这个呢: public partial clas

我想创建一个依赖属性,其值依赖于其他依赖属性,但仍然可以设置/写入。例如,“DateOfBirth”是一个独立的名称。现在我想制作另一个名为YearOfBirth的DependencyProperty。当DateOfBirth带有Change时,它将强制使用YearOfBirth属性的值。i、 e.d.(出生财产年)

但是,如何使依赖依赖项属性(例如出生年份)可写/可设置

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

这个呢:

    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();
    }
}

看看。谢谢你的回复;在这种方法中,我们实际上创建了两个独立的属性,它们在更改时会相互更改。另一方面,我正在寻找一种方法,使出生年份不在RAM中存储其值,因为它是计算值,而是根据需要从出生日期开始计算。显然,当用户试图更改出生年份时,它会更新出生日期。