2

私はWindowsストアアプリに取り組んでいます。

たくさんのアイテムを含む ListView があります。一部のスタック パネルとグリッドにネストされていますが、基本的にはすべて自動サイズ調整されています。基本的に、ListView は、サイズに関係なく、画面の右半分の大部分に割り当てられます。

ListView にハード値の Height を指定すると、スクロールバーが自動的に表示され、余分な作業は必要ありません。偉大な。しかし、私は高さを設定したくありません...コンテナで利用可能なすべての領域にしたいのです。賢くしようとして9999か何かに設定すると、スクロールしません。

私はたくさんの調査を行ってきましたが、このような同様の質問は、ListView を保持するものは、StackPanel のように無限のサイズを与えることはできないと言っています。どのような代替手段がありますか? ListView を任意のスペースに配置して、スクロール バーを表示するにはどうすればよいですか?

私の唯一の考えは、ListViewを保持するコンテナで、高さがその値に設定されるように、使用可能なすべての領域があることをListViewに伝える何らかの方法が必要だということです。ListViewItem の Horizo​​ntalContentAlignment プロパティを 'Stretch' に設定して、ListView 内のアイテムを取得し、実際に利用可能な幅を知る方法と似ています。

私のレイアウトの本質的なビットはこれです:

<!-- Nested in some other stuff simple Grids and StackPanels, none of which has hard heights set (all auto or *) -->

<!-- Even if I made this a Grid with one Row, setting definition to * or Auto doesn't help the issue - no scroll bar appears -->
<StackPanel>

    <!-- Other stuff that has Visibility="Collapsed"... I have code so that only one item at a time within this container will ever be visible, and it gets all available space. -->

    <ListView ItemsSource="{Binding SomeBigList}" ItemTemplate="{StaticResource MyDataTemplate}" />

    <!-- Other stuff that has Visibility="Collapsed" -->

</StackPanel>

ハードな高さをどこにも設定せずに、スクロールバーを ListView に表示するにはどうすればよいですか? 助けてくれてありがとう。

4

2 に答える 2