2

添付されたプロパティについて読んでいて、次のようなもので設定できることを読みました。

Grid.SetRow(myElement, 0);

これが静的な方法である場合、どのようGrid.SetRow()Gridそれを入れるべきmyElementですか?または、何らかの形myElementで行0に関連付けられるように機能するので、Gridを含む新しいオブジェクトmyElementがある場合は、どの行に移動するかをチェックするだけで済みmyElementますか?

4

2 に答える 2

3

添付プロパティを設定すると、値は要素にのみ格納され、添付プロパティが属する型には格納されません。

たとえば、添付された行プロパティは次のように実装されます。

public static readonly DependencyProperty RowProperty = ...;

public static void SetRow(UIElement element, int value)
{
    element.SetValue(RowProperty, value);
}

public static int GetRow(UIElement element)
{
    return (int)element.GetValue(RowProperty);
}

したがって、 を呼び出すGrid.SetRowと、内部的element.SetValueに が呼び出されます。依存オブジェクトと同様elementに、これらの追加のプロパティを格納できます。と. Dictionary<DependencyProperty, object>_ SetValue_GetValue

したがって、値は依存オブジェクト自体の内部にのみ格納されます。これで、Grid がそれ自体をレンダリングするときに、その子を繰り返し処理して、測定およびレイアウト ルーチンを呼び出します。また、それらの各子に対して、添付された行プロパティが設定されているかどうかを確認するように呼び出しGrid.GetRow、それに応じて独自のレイアウト フェーズでそれらの選択を尊重します。

于 2013-03-03T23:20:58.753 に答える
1

これが静的メソッドの場合、Grid.SetRow() は myElement をどのグリッドに配置する必要があるのでしょうか?

それは知らない

それとも、何らかの方法で myElement を行 0 に関連付けるように動作するので、myElement を含む新しい Grid オブジェクトがある場合、myElement が移動する行をチェックインするだけで済みますか?

はい、正確に

于 2013-03-03T23:23:41.167 に答える