レイアウトが非常に単純な Windows 8 Metro アプリケーションを開発しています。WrapGrid
で囲まれた単一のページで構成され、ItemsControl
で囲まれていScrollViewer
ます。これは、アプリケーションのメイン ページの XAML コードです。
<Page ...>
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<Grid x:Name="MainGrid" Margin="120,140,32,0">
<ScrollViewer x:Name="ScrollView"
VerticalScrollBarVisibility="Auto"
HorizontalAlignment="Stretch">
<ItemsControl x:Name="itemsControl" HorizontalAlignment="Stretch">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid Orientation="Horizontal"
HorizontalChildrenAlignment="Stretch"
Margin="0"
HorizontalAlignment="Center">
<WrapGrid.ChildrenTransitions>
<TransitionCollection>
<EntranceThemeTransition />
<RepositionThemeTransition />
</TransitionCollection>
</WrapGrid.ChildrenTransitions>
</WrapGrid>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</ScrollViewer>
</Grid>
<Page.BottomAppBar>
...
</Page.BottomAppBar>
</Page>
また、ユーザーがアプリケーション バーの特定のボタンをクリックすると、新しいインスタンスが作成され、プログラムによって ItemsControl に追加されるユーザー コントロールもあります。を使用するという事実から予想されるようWrapGrid
に、コントロール インスタンスは、画面にスペースがなくなるまで 1 行に順番に積み重ねられます。その時点で新しい行に表示され、それらを表示するには下にスクロールする必要があります。 . ここまでは順調ですね。
今、機能を実装したいのですが、それを実現する方法がわかりません。私が欲しいのは次のとおりです。ユーザーがアプリケーションでズームアウトしてコントロールが小さく表示されると、新しい使用可能なスペースを使用して、行ごとにより多くのコントロールを表示できるようにします。代わりに、現在の動作では、ItemsControl
自体が削減され、周囲の余分なスペースは使用されません。
たとえば、ユーザーが 10 個のコントロールを追加したとします。1 行に 4 つのコントロール用のスペースがあるため、4、4、および 2 つのコントロールで 3 行のコントロールが表示されます。ユーザーがズームアウトし、行に 7 つのコントロールItemsControl
を配置できるようになった場合、7 つと 3 つのコントロールを含む行が 2 つだけになるように、自分自身を再配置する必要があります。どうすればこれを達成できますか?
私は自分自身を適切に説明したことを願っています。私の質問が十分に明確でない場合は、遠慮なく尋ねてください。どうもありがとうございました!