UIデザインの問題が発生しています。これは、アプリウィンドウのコンテンツをウィンドウの最小サイズに合わせて縮小したいものです。
以下のXAMLを使用すると、ウィンドウが狭すぎると、コンテンツが縮小されて収まりません。完全。私の問題は、ウィンドウが短すぎると、次のようにコンテンツが下部から外れることです。
<ItemsControl ItemsSource="{Binding GroupStatsDisplayList}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Background="Red" Margin="5" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Viewbox Margin="4" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="Auto" Height="Auto" >
<ListBox>
<StackPanel Orientation="Horizontal" Margin="5" Background="Blue">
<Label Content="{Binding GroupID}" FontWeight="Bold"/>
<Label Content="{Binding GroupName}" Width="100" FontWeight="Bold" />
<Label Content="{Binding CallsInQueue}" FontWeight="Bold" />
<Label Content="{Binding TSF}" FontWeight="Bold" />
</StackPanel>
</ListBox>
</Viewbox>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
ItemsControlがデフォルトのitemspanelとしてStackPanelを使用し、StackPanelが私が見ているように動作するという同様の質問への回答を読みました。私のような問題を克服するためにグリッドが推奨されています。
そこで、ItemsControlにグリッドを使用するように指示してみました。
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid Background="Red" Margin="5" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
どちらの方向にも拘束されるとコンテンツのサイズが変更されるため、より適切です。さらに悪いことに、コレクションの最後のアイテムで更新されるViewBox-> ListBox要素が1つしかないようです(アプリの起動時に、コレクションサイクルの3つのアイテムが表示されます)。コレクション内のすべてのアイテムが画面に表示されるわけではなく、最後のアイテムのみが表示されます。
DockPanelが私を救うことができることも読みました...
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<DockPanel Background="Red" Margin="5" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
その時、物事はおかしくなり、私はこの質問を書くことにしました。これでコレクション内のすべてのアイテムが表示されますが、ウィンドウを水平方向に展開すると1つずつ表示され、既存のアイテムがウィンドウの垂直方向に拡大すると、新しいアイテムが1つずつ表示されます。
最初の画像のように見えるが、ウィンドウの最小寸法に収まるように縮小するレイアウトを取得するにはどうすればよいですか?