如何选择分组 GridView 的所有项

本文关键字:GridView 何选择 选择 | 更新日期: 2023-09-27 18:35:42

对于 WinRT 应用,我有一个 GridView,其中对项目进行分组,以便每个组都包含一个标题和他的组元素。

想要应用栏中的按钮,将网格视图中的所有项目传递到所选状态(带有紫色边框和复选框,就像我右键单击某个项目时一样)。

我尝试将每个项目添加到我的 GridView 的"选定项"列表中,但它不执行任何操作。

    private void FavoriButton_Click_1(object sender, RoutedEventArgs e)
     {
              foreach (Categorie cat in coll)
                  itemGridView.SelectedItems.Add(cat);
     }

有谁知道如何将网格视图的所有项目都放在 selectedState(带有紫色边框和复选框)?

这是代码

 public sealed partial class HomePage : LayoutAwarePage
  {
    ObservableCollection<Categorie> coll = new ObservableCollection<Categorie>();
  public HomePage()
    {
        this.InitializeComponent();
        cvs1.Source = coll;
        (itemGridView as ListViewBase).ItemsSource = this.cvs1.View.CollectionGroups;
    }
     async private void FillPage()
     {

             var categories = App.api.Categories_Get();
             if (categories == null || categories.Count == 0)
                 return;

             for (var i = 0; i < categories.Count; i++)                    
                 coll.Insert(i, categories[i]); 

     }
      private void FavoriButton_Click_1(object sender, RoutedEventArgs e)
     {
              foreach (Categorie cat in coll)
              {
                  itemGridView.SelectedItems.Add(cat);
              }
     }

et le XAML

<common:LayoutAwarePage
x:Class="NMA.Pages.HomePage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:NMA"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:common="using:NMA.Common"
mc:Ignorable="d">
<common:LayoutAwarePage.Resources>
<CollectionViewSource x:Name="cvs1" ItemsPath="listArt" IsSourceGrouped="True"  />
<DataTemplate x:Key="Standard250x250ItemTemplatePerso">
        <Grid HorizontalAlignment="Left" Width="270" Height="210" VariableSizedWrapGrid.ColumnSpan="1" VariableSizedWrapGrid.RowSpan="1" local:Tilt.IsTiltEnabled="False" >
            <Image Width="270" Height="210" Source="{Binding ImgArt}"   CacheMode="BitmapCache" VerticalAlignment="Top"/>
        </Grid>
    </DataTemplate>

</common:LayoutAwarePage.Resources>
<Grid  Background="Transparent" x:Name="MyGrid">
    <Grid x:Name="NormalGrid">
        <Grid.RowDefinitions>
        <RowDefinition Height="60"/>
        <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
 <local:VariableGridView
        x:Name="itemGridView"
        AutomationProperties.AutomationId="ItemGridView"
        AutomationProperties.Name="Items"
        Grid.RowSpan="2"
        Padding="120,130,120,74"          
        ItemsSource="{Binding Source={StaticResource cvs1}}"
        ItemTemplate="{StaticResource Standard250x250ItemTemplatePerso}"
        IsSwipeEnabled="False"
        IsItemClickEnabled="True"
         Background="Transparent"
                ScrollViewer.HorizontalScrollBarVisibility="Disabled"  ScrollViewer.HorizontalScrollMode="Disabled" SelectionMode="Multiple">

                    <local:VariableGridView.ItemsPanel >
                        <ItemsPanelTemplate>
                            <VirtualizingStackPanel Orientation="Horizontal" Background="Transparent" local:Tilt.IsTiltEnabled="False" Margin="0,0,100,0" />
                        </ItemsPanelTemplate>
                    </local:VariableGridView.ItemsPanel>
                    <local:VariableGridView.GroupStyle>
                        <GroupStyle >
                            <GroupStyle.HeaderTemplate>
                                <DataTemplate x:Name="MyDataTemplate">
                                    <Button x:Name="HeaderButton" AutomationProperties.Name="MyHeaderButton" Click="HeaderButton_Click_1"  Style="{StaticResource ButtonHeader_Style}" Content="{Binding NomCat}" FontSize="26" FontFamily="{StaticResource SegoeWPLight}" Margin="-24,0,0,20" Width="900" Background="Transparent">
                                    </Button>
                                </DataTemplate>
                            </GroupStyle.HeaderTemplate>
                            <GroupStyle.Panel>

                                <ItemsPanelTemplate>
                                    <VariableSizedWrapGrid ItemWidth="270"  ItemHeight="210"   Orientation="Vertical" Margin="0,0,-30,0" MaximumRowsOrColumns="4" Background="Transparent" Width="900">
                                </ItemsPanelTemplate>
                            </GroupStyle.Panel>
                        </GroupStyle>
                    </local:VariableGridView.GroupStyle>
                </local:VariableGridView>
    </Grid>
</common:LayoutAwarePage>

多谢

如何选择分组 GridView 的所有项

我实际上找到了它,我正在努力浏览可视化树,而使用ItemContainerGenerator很简单。

private void FavoriButton_Click_1(object sender, RoutedEventArgs e)
     {    
         for( var i = 0 ; i<itemGridView.Items.Count ; i++)
         {
             (itemGridView.ItemContainerGenerator.ContainerFromIndex(i) as GridViewItem).IsSelected = true;
         }
     }

毕竟很容易。