【发布时间】:2013-12-18 20:29:20
【问题描述】:
我将DepdendencyObjects 与PropertyChangedCallbacks 一起使用,我想检测此回调中的子属性更改。问题是 DependencyPropertyChangedEventArgs-Object 只让我看到包含 DP 的属性,其中包含已更改的属性。有什么方法可以到达这个子属性?
class MainClass : DepencencyObject
{
public ComplexObject MainProperty
{
get { return (ComplexObject)GetValue(MainPropertyProperty); }
set { SetValue(MainPropertyProperty, value); }
}
public static readonly DependencyProperty MainPropertyProperty =
DependencyProperty.Register("MainProperty",
typeof(ComplexObject), typeof(MainClass),
new PropertyMetadata(new ComplexObject([...])));
private static void MainProperty_PropertyChangedCallback(... DependencyPropertyChangedEventArgs e)
{
// Unable to detect a change, if 'ComplexObject.SubProperty'
// changes; it is shown like a change of 'MainProperty'
}
}
class ComplexObject : DepencencyObject
{
public int SubProperty
{
get { return (int)GetValue(SubPropertyProperty); }
set { SetValue(SubPropertyProperty, value); }
}
public static readonly DependencyProperty SubPropertyProperty =
DependencyProperty.Register("SubProperty",
typeof(int), typeof(ComplexObject),
new PropertyMetadata(0));
}
有人这样做
(new MainClass()).MainProperty.SubProperty = 100000;
并且调用 PropertyChangedCallback 是因为 MainPropertychanged(不是 SubProperty)。
【问题讨论】:
-
您需要更多代码,以便我们提供帮助
-
我添加了一些代码
-
您的绑定将正确监听 sub 属性。我猜你没有使用绑定来监听这个变化?
-
值来自哪里并不重要。
-
您需要订阅 MainProperty 中子属性的更改并将其冒泡给调用者。
标签: c# wpf dependency-properties dependencyobject