0

レイアウトが非常に単純な 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 つだけになるように、自分自身を再配置する必要があります。どうすればこれを達成できますか?

私は自分自身を適切に説明したことを願っています。私の質問が十分に明確でない場合は、遠慮なく尋ねてください。どうもありがとうございました!

4

0 に答える 0