我的场景中有两个类(比如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);
}
}
}
然而,我似乎无法让它发挥作用。有什么建议吗?
答案 0 :(得分:0)
我认为主要问题是依赖属性是在/不为继承DependencyObject的类中声明的
定义依赖项属性的类必须从DependencyObject类继承。在XAML中使用的许多UI控件类都是从DependencyObject类派生的,它们支持依赖属性,例如: Button类支持IsMouseOver依赖项属性。
查看此链接以获取有关WPF - Dependency Properties
的更多信息