2017-03-01 68 views
1

私のコントロールでは、子がStackPanelであるContentPresenterがあります。このStackPanelの内部にはいくつかの要素があります。コントロールのユーザーが定義するため、番号は未定義です。WPF/Xaml - 動的要素の高さを取得

StackPanel内部の要素の高さにバインドする方法はありますか? Visual Studioのライブツリーには必要な高さを与えるProperty RenderSizeがありますが、このプロパティへのバインディングは何もしません。

コードが役立つかどうかわかりませんが、私のContentPresenterはここにあります。 InnerContentは、Setter(StackPanel)としてUIElementをとるカスタムプロパティです。

<ContentPresenter 
    x:Name="MyContentPresenter" 
    Content="{TemplateBinding InnerContent}" /> 

私はInnerContent.RenderSize.Heightにバインドしますが、これは何もしません。

EDIT: ContentPresentersの高さがアニメーション化されているため、ActualHeightプロパティにバインドできません。そのいくつかの種類のドロップダウン。高さは0とStackPanelの高さの間で切り替えられます。そして、この時点でStackPanelのActualHeightは0ですが、RenderSizeは希望の高さです。

ここに何か不足していますか?これは大きな問題のようには見えないからです。

+1

try 'InnerContent.ActualHeight' – ASh

+0

問題は、高さが他の場所に設定されているボックスにStackPanelをホストしていることです。内容の高さを読んでみることは、犬が自分の尻尾をつかむようなものです。 CanvasやScrollViewerでStackPanelをホストしようとする試みは、子のサイズを制限しないためです。外側コントロールを展開する瞬間に、SPのActualHeightを測定してアニメーションを開始することができます。 –

答えて

0

大丈夫です。これは私の悪かったです。 ActualHeightプロパティは、ContentPresentersのHeightプロパティが0であっても、StackPanelのActualHeightが正しく設定されていても正常に動作します。

ありがとうございます!

関連する問題