2012-01-06 1 views
0

私は自分自身を自動化しようとしているカスタムコントロールを持っています。問題は、.Contentプロパティがシーンの裏側でViewModelに自動的に設定されることです。実際のViewにアクセスして幅と高さがどのように設定されているかを確認するには、コントロールが必要です。コンテンツがViewModelを返すときのビューへの参照を取得しますか?

.ContentがViewModelに設定されている場合、どのようにViewへのハンドルを取得しますか?

+0

カスタムコントロールはビューではありませんか? – FMM

+0

あなたは質問を再記述したいかもしれません。ビューのハンドルを取得するとどういう意味ですか? –

+0

たとえば、私はモーダルウィンドウダイアログを持っています。そのウィンドウのロードされたイベントでは、レンダリングしているトップレベルのコントロール/コンテンツを取得したいが、ウィンドウの.Contentプロパティをチェックするが、それは私のビューではなく、レンダリングされている最上位のグリッドではなく、それはViewModelを返しています。 – happyfirst

答えて

0

WPFは、彼らがしているパネルの種類に基づいて、すでに自動サイズを制御します。例えば

、あなたのコントロールがGridである場合には、自動サイズ自体を伸ばすし、それに利用できる空間全体を埋めます。あなたのコントロールがStackPanelの場合は、必要なスペースをすべて取るために自動的にサイズ変更されます。

あなたのコントロールが同じサイズになりたいのであれば、それはコンテンツだ何ようですが、それにサイズを設定し、いずれかのそのようなStackPanel

など子供、だストレッチしないパネルであなたの UserControlを置かないでください
<StackPanel> 
    <local:MyUserControl /> 
</StackPanel> 

Contentを子供の体重を伸ばさないコントロールで囲みます。

<UserControl ....> 
    <UserControl.Template> 
     <ControlTemplate> 
      <StackPanel> 
       <ContentPresenter /> 
      </StackPanel> 
     </ControlTemplate> 
    </UserControl.Template> 
</UserControl> 
+0

私はコントロールが自動的に自力化できることを理解します。問題は、幅と高さをAutoに設定したビューがあることです。だから私は私のメインのアプリのタブでそのビューをレンダリングするビューモデルを表示すると、それは正しく自動的に収まります。しかし、ときどきモーダルダイアログ(自動幅と高さに設定されている)をスローするカスタムルックアップコントロールを介して、同じビューをレンダリングすると、すべてのモーダルダイアログが自動的に大きく表示されます!!!!!私は、そのビューのハンドルを取得しようとしているので、幅と高さが自動であれば、サイトを主アプリウィンドウより小さく中央に変更することができます。 – happyfirst

+0

@happyfirstなぜあなたのダイアログに最大高さ/幅を設定しないのですか? – Rachel

+0

私はそれを試みた。私はうまくいけば、最大の幅と高さを設定していたと思って、まだ巨大なオープン。 – happyfirst

関連する問題