使用依赖项属性更新属性值

时间:2016-06-30 10:24:47

标签: c# wpf dependency-properties

我的场景中有两个类(比如A和B),其中我在A类中创建了一个B类实例。两个类都有一个名为Settings的属性。每当更新B类的Settings属性的值时,我需要它立即更新类A的Settings属性的值。我已经读过我可以使用DependencyProperty这样做,但是我正在努力此刻。

以下是班级结构:

    public class A
    {
        public Settings Settings { get; set; }
    }

    public class B
    {
        public Settings Settings { get; set; }
    }

    public enum Settings
    {
        Hidden,
        Visible
    }

这是我尝试实现依赖属性。

public class A : DependencyObject
{
    public static readonly DependencyProperty SettingsProperty =
    DependencyProperty.RegisterAttached("Settings", typeof(Settings), typeof(A),
    new FrameworkPropertyMetadata(Settings.Visible, new PropertyChangedCallback(SettingsChanged)));

    public Settings Settings
    {
        get { return (Settings)GetValue(SettingsProperty); }
        set { SetValue(SettingsProperty, value); }
    }

    private static void SettingsChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
    {
        // Update the Settings property of class B
    }
}

public class B : DependencyObject
{
    public static DependencyProperty SettingsProperty;
    public Settings Settings
    {
        get
        {
            return (Settings)GetValue(SettingsProperty);
        }
        set
        {
            SetValue(SettingsProperty, value);
        }
    }
}

然而,我似乎无法让它发挥作用。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我认为主要问题是依赖属性是在/不为继承DependencyObject的类中声明的

  

定义依赖项属性的类必须从DependencyObject类继承。在XAML中使用的许多UI控件类都是从DependencyObject类派生的,它们支持依赖属性,例如: Button类支持IsMouseOver依赖项属性。

查看此链接以获取有关WPF - Dependency Properties

的更多信息