0

私は次のようなグリッドビューを持っています:

<GridView ItemsSource="{Binding Source={StaticResource GroupedMatches}}" 
              SelectionMode="None"
              ItemClick="OnItemClicked"
              IsItemClickEnabled="True"
              Grid.Row="4"
              Grid.Column="1">
        <GridView.GroupStyle>
            <GroupStyle>
                <GroupStyle.HeaderTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Name}" />
                    </DataTemplate>
                </GroupStyle.HeaderTemplate>
            </GroupStyle>
        </GridView.GroupStyle>
    </GridView>

GroupedMatchesページ内の CollectionViewSource です。

<CollectionViewSource x:Name="GroupedMatches" 
                      Source="{Binding Matches}" 
                      IsSourceGrouped="True" 
                      ItemsPath="Matches" />

そのバッキング ビュー モデルは、Matches が IEnumerable である Name および Matches プロパティを持つクラスです。

上記が 2 つのグループにまたがる 3 つのアイテムでレンダリングされる場合、2 つのアイテムのみがレンダリングされます。GridView.GroupStyle を削除すると、3 つの項目すべてが期待どおりにレンダリングされます。ヘッダーが存在するときにアイテムがカリングされる原因を知っている人はいますか?

編集:フォローアップすると、2番目のグループ(アイテムが期待どおりに表示されない)のサイズが最初のグループと一致しているように見えることがわかりました. したがって、最初のグループに 2 つの項目がある場合、2 番目のグループには 2 つの項目が表示されます。最初のグループに 3 つのアイテムがある場合、最初のグループには 3 つが表示されます。今のところ、Filip が言及したデフォルトのグリッド レイアウトをより厳密に反映するようにレイアウトを変更することを選択しましたが、2 つのグループのサイズがリンクされている理由を特定できませんでした。

4

1 に答える 1

0

やあアレックス(私たちは以前に会ったことがあると思います)。ジムが言ったことに加えて (各 Matches は Name と別のネストされた Matches プロパティを持つオブジェクトを表していますか?)、指定しないと、いくつかのアイテムを取得する可能性GroupStyle.Panelのあるデフォルトを取得するという問題に遭遇する可能性があります。StackPanelグループ化されたコレクションでクリップされます。デフォルトの「Grid App (XAML)」テンプレート ベースのアプリケーションを作成すると、グループ パネルの次の定義が得られます。

<GroupStyle.Panel>
    <ItemsPanelTemplate>
        <VariableSizedWrapGrid
            Orientation="Vertical"
            Margin="0,0,80,0" />
    </ItemsPanelTemplate>
</GroupStyle.Panel>

これをコメントアウトすると、グループはこれから変更されます

GroupStyle が定義された GridView

これに

GroupStyle が定義されていない GridView

于 2013-02-21T08:57:29.627 に答える