0

私はWPFを詳細に理解しようとしています。これまでのところ、2つのことがどのように機能するかわかりません:

1.依存関係プロパティ (DP) はどこに保存されますか?

私の推測: DP は静的であるため、このオブジェクト (DP) は、この DP を持つクラスから派生したすべてのオブジェクトで同じです。DP には独自のストレージがあり、DP はこの DP を使用するすべてのオブジェクトの値を保存すると思います。Mb sth のような辞書...

2.グリッドがオブジェクト (ボタンなど) を独自の行に割り当てる方法 (詳細)?

私の推測:

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

SetRow (Grid から) が実行されます。PropertyChangedCallback (メタデータで初期化) もトリガーされます。この Callback で Grid が何らかのコードによって Button を割り当てると思いますが、私には意味がありません... Callback は DepedencyObject (= Grid インスタンス) と EventArgs (= 値) を取得します。どのオブジェクトが添付依存関係プロパティを変更したかをどのようにグリッドが知ることができますか? グリッドには、オブジェクトの位置用の独自のストレージが必要です... グリッドはその情報をどのように保存しますか?

事前にご説明いただきありがとうございます。

4

1 に答える 1

0
  1. そうです、オブジェクトをその値に関連付けるある種の静的辞書があります (さまざまなレベル、スタイル、ローカル値などで。値はprecedenceによって決定されます)。内部はあなたにとって重要ではありません。
  2. プロパティが設定された依存オブジェクトは、グリッドではなくコールバックに渡されます。(いずれにせよ、直接検出されるグリッド インスタンスはありません。グリッド インスタンスは、 を介して検出されますVisualTreeHelper.GetParent)。このメカニズムはおそらくGrid.Children、レイアウト パス中に をループし、それらのプロパティを取得して、すべてがどこに行くべきかを決定することによって機能します。
于 2012-06-03T20:03:52.670 に答える