2012-06-03 85 views
0

我想了解详细的WPF。到目前为止,我不知道如何工作2件事:依赖属性 - 存储,Grid.Row

1.如何存储依赖属性(DP)?

我猜测:DP是静态的,所以这个对象(DP)对于派生自类的所有对象具有相同的DP。我想DP有它自己的存储器,其中DP为所有使用此DP的对象保存值。 Mb sth like dictionary ...

2.网格如何将一个对象(例如Button)分配给它自己的行(详细信息)?

我的猜测:

Button Grid.Row="1" (in XAML)

SetRow(来自电网)将被执行。 PropertyChangedCallback(在元数据中初始化)也会被触发。我想,Grid将通过此回调中的某些代码分配Button,但对我来说这没有任何意义......回调将获得DepedencyObject(= Grid实例)和EventArgs(= value)。网格如何知道哪个对象发生了变化附属的依赖属性?网格应该有自己的存储对象的位置...网格如何保存这些信息?

在此先感谢您的解释。

回答

0
  1. 对,有些类型的静态字典会将对象与它们的值相关联(以各种级别,样式,本地值等等。该值由precedence确定)。内部对你无关紧要。
  2. 错误,将属性设置的依赖项对象传递给回调函数,而不是网格。 (无论如何都没有直接找到网格实例,然后通过VisualTreeHelper.GetParent找到网格实例)。该机制可能通过在布局过程中循环遍历Grid.Children以及获取那些属性来确定所有内容的去向。