CollectionViewSource Класс

Определение

Предоставляет источник данных, который добавляет поддержку группирования и текущего элемента в классы коллекции.

public ref class CollectionViewSource sealed : DependencyObject
/// [Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class CollectionViewSource final : DependencyObject
[Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class CollectionViewSource : DependencyObject
Public NotInheritable Class CollectionViewSource
Inherits DependencyObject
<CollectionViewSource .../>
Наследование
Object Platform::Object IInspectable DependencyObject CollectionViewSource
Атрибуты

Примеры

Tip

Дополнительные сведения, рекомендации по проектированию и примеры кода см. в разделе "Семантический масштаб".

Приложение Галерея WinUI 3 включает интерактивные примеры большинства элементов управления, особенностей и возможностей WinUI 3. Получите приложение из Microsoft Store или получите исходный код в GitHub.

В следующем примере кода показано, как привязать элемент управления ListBox к результатам запроса LINQ группировки. В этом примере коллекция команд сгруппирована по городу и отображается с именем города в качестве заголовков группы. Полный список кода см. в примере привязки данных XAML.

<Grid>

  <Grid.Resources>
    <CollectionViewSource x:Name="groupInfoCVS" IsSourceGrouped="true"/>
  </Grid.Resources>

  <ListBox x:Name="lbGroupInfoCVS" 
    ItemsSource="{Binding Source={StaticResource groupInfoCVS.View}}">

    <ListBox.GroupStyle>
      <GroupStyle>
        <GroupStyle.HeaderTemplate>
          <DataTemplate>

            <TextBlock Text="{Binding Key}"/>

          </DataTemplate>
        </GroupStyle.HeaderTemplate>
      </GroupStyle>
    </ListBox.GroupStyle>

    <ListBox.ItemTemplate>
      <DataTemplate>

        <Border Background="{Binding Color}" 
          Width="200" CornerRadius="10" HorizontalAlignment="Left">

          <TextBlock Text="{Binding Name}" 
            Style="{StaticResource DescriptionTextStyle}" 
            HorizontalAlignment="Center" FontWeight="Bold"/>

        </Border>
      </DataTemplate>
    </ListBox.ItemTemplate>

  </ListBox>

</Grid>
Teams teams = new Teams();
var result = 
    from t in teams 
    group t by t.City into g 
    orderby g.Key 
    select g;
groupInfoCVS.Source = result;

Комментарии

Используйте CollectionViewSource, чтобы привязать элементы управления списком к коллекциям, но вы хотите отобразить эти коллекции в группах и сохранить текущий элемент независимо от элемента управления списком. Это особенно полезно, если вы хотите привязать несколько элементов управления к одной коллекции, и вы хотите, чтобы текущий элемент в одном элементе управления изменил текущий элемент в других связанных элементах управления. Обычно вы определяете CollectionViewSource как ресурс XAML и привязываете к нему с помощью расширения разметки {StaticResource}. Затем его свойство Source можно задать в коде программной части для поддерживаемого типа коллекции.

Все элементы управления, которые привязываются к одному и тому же объекту CollectionViewSource, всегда будут иметь один и тот же текущий элемент. Текущий элемент можно получить программным способом с помощью свойства ICollectionView.CurrentItem значения свойства CollectionViewSource.View .

Если элементы в коллекции сами являются коллекциями или являются объектами, содержащими коллекции, можно отобразить коллекции как группы в более крупной коллекции. Для этого задайте для свойства IsSourceGroupedзначение true. Если элементы содержат коллекции, но не сами коллекции, необходимо также задать свойство ItemsPath именем свойства коллекции.

Note

Установка свойства Source на другой экземпляр CollectionViewSource не поддерживается.

Конструкторы

Имя Описание
CollectionViewSource()

Инициализирует новый экземпляр класса CollectionViewSource .

Свойства

Имя Описание
Dispatcher

Всегда возвращается null в приложении пакета SDK для приложений windows. Вместо этого используйте DispatcherQueue .

(Унаследовано от DependencyObject)
DispatcherQueue

Возвращает, DispatcherQueue с которым связан этот объект. Представляет DispatcherQueue собой объект, который может получить доступ к DependencyObject потоку пользовательского интерфейса, даже если код инициируется потоком, отличным от пользовательского интерфейса.

(Унаследовано от DependencyObject)
IsSourceGrouped

Возвращает или задает значение, указывающее, сгруппированы ли исходные данные.

IsSourceGroupedProperty

Определяет свойство зависимостей IsSourceGrouped .

ItemsPath

Возвращает или задает путь к свойству, который следует из элемента верхнего уровня, чтобы найти группы в CollectionViewSource.

ItemsPathProperty

Определяет свойство зависимостей ItemsPath .

Source

Возвращает или задает объект коллекции, из которого создается это представление.

SourceProperty

Определяет свойство зависимостей источника .

View

Возвращает объект представления, связанный с этим экземпляром CollectionViewSource.

ViewProperty

Определяет свойство зависимостей View .

Методы

Имя Описание
ClearValue(DependencyProperty)

Очищает локальное значение свойства зависимостей.

(Унаследовано от DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Возвращает любое базовое значение, установленное для свойства зависимостей, которое будет применяться в случаях, когда анимация не активна.

(Унаследовано от DependencyObject)
GetValue(DependencyProperty)

Возвращает текущее эффективное значение свойства зависимостей из DependencyObject.

(Унаследовано от DependencyObject)
ReadLocalValue(DependencyProperty)

Возвращает локальное значение свойства зависимостей, если задано локальное значение.

(Унаследовано от DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Регистрирует функцию уведомлений для прослушивания изменений в определенном экземпляре DependencyProperty в этом экземпляре DependencyObject .

(Унаследовано от DependencyObject)
SetValue(DependencyProperty, Object)

Задает локальное значение свойства зависимостей в DependencyObject.

(Унаследовано от DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Отменяет уведомление об изменении, которое ранее было зарегистрировано путем вызова RegisterPropertyChangedCallback.

(Унаследовано от DependencyObject)

Применяется к

См. также раздел