7

WinRTXAMLアプリでさまざまなアイテムのセットのグループを表示するためにGridViewを使用しています。ItemsPanelTemplateが、スペースが不足しているときにアイテムを垂直にスタックするラッピンググリッドを使用することを除いて、すべてがうまく機能します。

そこで、次のようにStackPanelを使用しようとしました。

<GroupStyle.Panel>
    <ItemsPanelTemplate>
        <StackPanel Orientation="Vertical" Visibility="Visible" />
    </ItemsPanelTemplate>
</GroupStyle.Panel>

アイテムは垂直に積み重ねられており、それは素晴らしいことですが、問題は、スクロールできず、画面に収まらないことです。そこで、垂直スクロールを有効にしてみました。

<GroupStyle.Panel>
    <ItemsPanelTemplate>
        <StackPanel Orientation="Vertical" Visibility="Visible" 
                    ScrollViewer.VerticalScrollBarVisibility="Visible"
                    ScrollViewer.VerticalScrollMode="Enabled"/>
    </ItemsPanelTemplate>
</GroupStyle.Panel>

しかし、それはうまくいきません。GridViewグループ内で垂直スクロールを実行する方法について何か提案はありますか?

編集1:

私もこれを試しました:

<GroupStyle.Panel>
    <ItemsPanelTemplate>
        <ScrollViewer VerticalScrollBarVisibility="Visible"
                      HorizontalScrollMode="Disabled" 
                      ZoomMode="Disabled" 
                      VerticalScrollMode="Enabled">
              <StackPanel Orientation="Vertical" Visibility="Visible" />
         </ScrollViewer>
     </ItemsPanelTemplate>
 </GroupStyle.Panel>

ItemsPanelTemplateには子としてパネルが必要なため、これによりデバッガーが機能しなくなります。

4

4 に答える 4

10

OK、ついに解決しました!ご担当者様:

<GroupStyle.ContainerStyle>
    <Style TargetType="GroupItem">
        <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="GroupItem">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="*"/>
                    </Grid.RowDefinitions>
                    <ContentPresenter Content="{TemplateBinding Content}" Grid.Row="0"/>
                    <ItemsControl x:Name="ItemsControl2" ItemsSource="{Binding GroupItems}" Grid.Row="1">
                        <ItemsControl.Template>
                        <ControlTemplate>
                            <ScrollViewer x:Name="ScrollViewer" VerticalScrollBarVisibility="Hidden"                                                  VerticalScrollMode="Enabled" HorizontalScrollBarVisibility="Disabled"                                                  HorizontalScrollMode="Disabled">
                            <ItemsPresenter />
                            </ScrollViewer>
                        </ControlTemplate>
                        </ItemsControl.Template>
                    </ItemsControl>
                </Grid>
           </ControlTemplate>
       </Setter.Value>
       </Setter>
   </Style>
</GroupStyle.ContainerStyle>

グリッドを使用して、ScrollViewerが正しくスケーリングされることを確認することが重要です。

于 2012-06-26T08:26:35.113 に答える
2

これはどうですか?

次のような要素をレンダリングします。
アイテム1アイテム2
アイテム3アイテム4

<ListView Width="200">
    <ListBoxItem>
        <TextBlock>Item 1</TextBlock>
    </ListBoxItem>
    <ListBoxItem>
        <TextBlock>Item 2</TextBlock>
    </ListBoxItem>
    <ListBoxItem>
        <TextBlock>Item 3</TextBlock>
    </ListBoxItem>
    <ListBoxItem>
        <TextBlock>Item 4</TextBlock>
    </ListBoxItem>
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapGrid Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
</ListView>
于 2012-10-26T15:15:14.590 に答える
0

私はあなたの要素をスクロールビューア内に直接配置します。このような:

<GroupStyle.Panel>
 <ItemsPanelTemplate>
      <ScrollViewer VerticalScrollBarVisibility="Visible" HorizontalScrollMode="Disabled" ZoomMode="Disabled" VerticalScrollMode="Enabled">
            <StackPanel Orientation="Vertical" Visibility="Visible" />
      </ScrollViewer>
 </ItemsPanelTemplate>

これがお役に立てば幸いです、ランス

于 2012-06-22T15:15:12.010 に答える
0

ScrollViewerのZoomModeをDisabledに設定することもできます:)

よろしく

于 2013-04-18T14:14:35.860 に答える