質問

誰かが WPF ストレッチアライメントを理解するのを手伝ってくれませんか。コントロールで領域を埋める必要があるが、どのレベルにverticalAlignment="Stretch"を配置すればよいのか理解できないという問題によく遭遇します。特に UserControls が関係する場合。

私はいつも、さまざまなことを試したり、すべてのレベルでストレッチを行ったりして問題を解決していますが、それを適切に行う方法を理解したいと思っています。

今私が得た例を見てみましょう:

  • 固定サイズのセルを持つグリッドがあります(GridSplitterでサイズ変更できます)。
  • このセルには、TabControl を備えた StackPanel を含む UserControl があります。
  • TabControl には、ListView を持つ別の UserControl を含む TabItems があります。

または、ある種の疑似 XAML で

<ns:MyUserControl1 Grid.Row="0" Grid.Column="0">
    <!-- this is in MyUserControl1 -->
    <StackPanel>
        <TabControl>
            <TabItem>
               <ns:MyUserControl2>
                    <!-- This is in MyUserControl2 -->
                    <ListView/>
               </ns:MyUserControl2>
            </TabItem>
        </TabControl>
    </StackPanel>
</ns:MyUserControl>

次に、ListView でグリッド セル全体を埋めるようにします (もちろん、TabControl とマージンは除きます)。

役に立ちましたか?

解決

あなたのListViewコントロールは、あなたのMyUserControl2を記入します - あなたは、これが全体のタブ内に収まるようにしたい場合、あなたはUserControlのXAMLファイル内の高さと幅制約を取り除くことを確認する必要があります(これらは300それぞれがデフォルトになります)

編集:謝罪 - 私はあなたのXAMLの重要な部分をスキップ... MyUserControl1コンテナはStackPanelのである...これは子コントロールをスタックし、それらに合わせてサイズが変更されます。あなたがDockPanel(またはグリッド)と交換した場合、子コントロールは、利用可能なスペースを埋め、あなたが後にある結果が得られます...

これは、MSDNの記事...希望ををを見てくださいこのことができます:)

scroll top