依赖属性 - 存储,Grid.Row

时间:2012-06-03 19:59:05

标签: c# wpf xaml

我正在尝试详细了解WPF。到目前为止我不知道如何工作2件事:

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

我的猜测:DP是静态的,因此这个对象(DP)对于从类派生的具有此DP的所有对象都是相同的。我认为DP有自己的存储空间,其中DP为使用此DP的所有对象保存值。 Mb ......喜欢字典...

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

我的猜测:

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

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

提前感谢您的解释。

1 个答案:

答案 0 :(得分:0)

  1. 对,有某种静态词典将对象与其值相关联(在各种级别,样式,局部值等处。值通过precedence确定)。内部对你来说无关紧要。
  2. 错误,设置属性的依赖项对象将传递给回调,而不是网格。 (无论如何都没有直接找到网格实例,然后通过VisualTreeHelper.GetParent找到网格实例)。该机制可能通过在布局过程中循环遍历Grid.Children并获取其属性来确定应该去哪里。