C# 带WrapGrid的Uwp分组GridView
我正在开发一个UWP应用程序,并尝试在每个gridview组中水平对齐我的项目 我有这个:C# 带WrapGrid的Uwp分组GridView,c#,xaml,gridview,uwp,windows-store,C#,Xaml,Gridview,Uwp,Windows Store,我正在开发一个UWP应用程序,并尝试在每个gridview组中水平对齐我的项目 我有这个: GROUP 1 Data 1 | Data 2 | Data 3 Data 1 | Data 2 | Data 3 Data 1 | Data 2 | Data 3 GROUP 2 Data 1 | Data 2 | Data 3 Data 1 | Data 2 | Data 3 我想要这个: GROUP 1 ______________________________Data 1 | D
GROUP 1
Data 1 | Data 2 | Data 3
Data 1 | Data 2 | Data 3
Data 1 | Data 2 | Data 3
GROUP 2
Data 1 | Data 2 | Data 3
Data 1 | Data 2 | Data 3
我想要这个:
GROUP 1
______________________________Data 1 | Data 2 | Data 3
______________________________Data 1 | Data 2 | Data 3
______________________________Data 1 | Data 2 | Data 3
GROUP 2
______________________________Data 1 | Data 2 | Data 3
______________________________Data 1 | Data 2 | Data 3
我使用WrapGrid命令对齐我的项目。
我还尝试了一个非分组的gridview,我的代码运行良好
<GridView Grid.Column="0" ItemsSource="{Binding Source={StaticResource GroupBycodeFamille}}" ItemTemplate="{StaticResource DataTempateCatalogue}">
<GridView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate x:DataType="viewModels:GroupInfoList">
<TextBlock Text="{x:Bind Key}" Style="{ThemeResource TitleTextBlockStyle}"/>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</GridView.GroupStyle>
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid Orientation="Horizontal" HorizontalAlignment="Center"/>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>
你可以通过设置来获得你想要的。此属性设置一个模板,用于创建用于布置项目的面板。但是,当GridView的ItemsPanel是默认的ItemsRapGrid或ItemsStackPanel时,GridViewItem使用使用GridViewItemPresenter而不是UIElement树的模板来提高网格性能。使用此模板时,设置GroupStyle.Panel属性不会影响GridView。我们需要GridViewItem通过将GridView的ItemsPanel设置为其他面板来使用其第二个模板。由于您的组垂直对齐,我们可以将GridView的ItemsPanel设置为: 完整的XAML代码可能如下所示:
<GridView Grid.Column="0" ItemsSource="{Binding Source={StaticResource GroupBycodeFamille}}" ItemTemplate="{StaticResource DataTempateCatalogue}">
<GridView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate x:DataType="viewModels:GroupInfoList">
<TextBlock Text="{x:Bind Key}" Style="{ThemeResource TitleTextBlockStyle}"/>
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.Panel>
<ItemsPanelTemplate>
<toolkit:WrapPanel Margin="200,0,0,0" Orientation="Horizontal" />
</ItemsPanelTemplate>
</GroupStyle.Panel>
</GroupStyle>
</GridView.GroupStyle>
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel HorizontalAlignment="Center" Orientation="Vertical" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>
以下是我在我身边测试时的输出:
通过设置,您可以得到想要的。此属性设置一个模板,用于创建用于布置项目的面板。但是,当GridView的ItemsPanel是默认的ItemsRapGrid或ItemsStackPanel时,GridViewItem使用使用GridViewItemPresenter而不是UIElement树的模板来提高网格性能。使用此模板时,设置GroupStyle.Panel属性不会影响GridView。我们需要GridViewItem通过将GridView的ItemsPanel设置为其他面板来使用其第二个模板。由于您的组垂直对齐,我们可以将GridView的ItemsPanel设置为: 完整的XAML代码可能如下所示:
<GridView Grid.Column="0" ItemsSource="{Binding Source={StaticResource GroupBycodeFamille}}" ItemTemplate="{StaticResource DataTempateCatalogue}">
<GridView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate x:DataType="viewModels:GroupInfoList">
<TextBlock Text="{x:Bind Key}" Style="{ThemeResource TitleTextBlockStyle}"/>
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.Panel>
<ItemsPanelTemplate>
<toolkit:WrapPanel Margin="200,0,0,0" Orientation="Horizontal" />
</ItemsPanelTemplate>
</GroupStyle.Panel>
</GroupStyle>
</GridView.GroupStyle>
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel HorizontalAlignment="Center" Orientation="Vertical" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>
以下是我在我身边测试时的输出:
谢谢你的回答,也谢谢你为我花时间,你解决了我的问题!然而,我有大量的数据,这个解决方案非常慢,我发现SemanticZoom也不起作用。你有什么想法吗?我只能想象点击这个复选框会有多困难:谢谢你的回答并为我花时间,你解决了我的问题!然而,我有大量的数据,这个解决方案非常慢,我发现SemanticZoom也不起作用。你有什么想法吗?我只能想象点击这个复选框会有多困难:
<GridView Grid.Column="0" ItemsSource="{Binding Source={StaticResource GroupBycodeFamille}}" ItemTemplate="{StaticResource DataTempateCatalogue}">
<GridView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate x:DataType="viewModels:GroupInfoList">
<TextBlock Text="{x:Bind Key}" Style="{ThemeResource TitleTextBlockStyle}"/>
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.Panel>
<ItemsPanelTemplate>
<toolkit:WrapPanel Margin="200,0,0,0" Orientation="Horizontal" />
</ItemsPanelTemplate>
</GroupStyle.Panel>
</GroupStyle>
</GridView.GroupStyle>
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel HorizontalAlignment="Center" Orientation="Vertical" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>