FindAncestorとAncestorLevelを使用して別のグリッドにグリッドの高さをバインド

binding wpf
FindAncestorとAncestorLevelを使用して別のグリッドにグリッドの高さをバインド

私の質問は、ある要素のプロパティを別の要素に適切にバインドすることです。

コードの構造は次のとおりです。

  1. データテンプレートにはグリッドが含まれます(グリッドを「GridA」と呼びます)。
    グリッドには、「ControlA」というコントロールのインスタンスを指定します。

  2. ControlA`は、 Grid`を含む `UserControl`です。 カスタムがあります
    コンテンツを動的に構築する「ControlA」(コードビハインド)のロジック-簡単に言えば、別のデータテンプレートを使用します。

  3. ControlA`のデータテンプレートは、別の Grid`で構成されています。 したい
    このデータテンプレートのこのグリッドの Height`プロパティを、上記の最初の箇条書きで参照されているデータテンプレートの Grid`の Height`プロパティ( GridA`というグリッド)にバインドします。

バインドに使用したXAMLを次に示しますが、グリッドが見つからないため、基本的に機能していません。

AncestorLevel = 2`を指定することで、探しているタイプの2番目の「見つかった」オカレンスを使用することを理解しています。この場合、タイプは Grid`です。 そのため、私の考えでは、最初に ControlA`で Grid`を見つけ、次にツリーをさかのぼって最初のデータテンプレートで Grid`を見つけます。これは GridA`という名前の `Grid`です。 これは2回目に発生するはずです、正しいですか?

  6  1


ベストアンサー

2番目のグリッドから検索を開始しているため、実際には祖先レベル= 1(デフォルト)が必要です。 観察する:

ところで、あなたのデザインは、WPFを採用するのではなく、WPFのレイアウトシステムと戦うように聞こえます。 そのため、あなたはおそらくあなた自身に多くの不必要な苦痛をもたらしているでしょう。

6


私は何かが足りませんか、またはRowDefinitionsの SharedSizeGroup`プロパティを使用して、最も外側のコントロールで Grid.IsSharedSizeGroup = “True” `を設定できますか?

0


タイトルとURLをコピーしました