CollectionViewSource Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет источник данных, который добавляет поддержку группирования и текущего элемента в классы коллекций.
public ref class CollectionViewSource sealed : DependencyObject
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 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.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class CollectionViewSource final : DependencyObject
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class CollectionViewSource : DependencyObject
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class CollectionViewSource : DependencyObject
Public NotInheritable Class CollectionViewSource
Inherits DependencyObject
<CollectionViewSource .../>
- Наследование
- Атрибуты
Требования к Windows
Семейство устройств |
Windows 10 (появилось в 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (появилось в v1.0)
|
Примеры
Совет
Дополнительные сведения, рекомендации по проектированию и примеры кода см. в статье Привязка данных.
Если у вас установлено приложение коллекции WinUI 2 , щелкните здесь, чтобы открыть приложение и просмотреть пример группировки с помощью SemanticZoom в действии.
В следующем примере кода показано, как привязать элемент управления ListBox к результатам группирования запроса LINQ (коллекция команд сгруппирована по городу и отображается с именем города в качестве заголовков группы). Полный список кода см. в примере привязки данных XAML.
<Grid>
<Grid.Resources>
<CollectionViewSource x:Name="groupInfoCVS" IsSourceGrouped="true"/>
</Grid.Resources>
<ListBox x:Name="lbGroupInfoCVS"
ItemsSource="{Binding Source={StaticResource groupInfoCVS}}">
<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;
Более подробный пример см. в примере привязки данных XAML.
Комментарии
Используйте CollectionViewSource, если требуется привязать элементы управления списка к коллекциям, но вы хотите отобразить эти коллекции в группах и сохранить текущий элемент независимо от элемента управления списком. Это особенно полезно, если требуется привязать несколько элементов управления к одной коллекции и вы хотите, чтобы текущий элемент в одном элементе управления изменил текущий элемент в других привязанных элементах управления. Обычно collectionViewSource определяется как ресурс XAML и выполняется привязка к нему с помощью расширения разметки {StaticResource}. Затем можно задать для свойства Source в коде программной части поддерживаемый тип коллекции.
Все элементы управления, которые вы привязываете к одному и тому же объекту CollectionViewSource, всегда будут иметь один и тот же текущий элемент. Доступ к текущему элементу можно получить программным способом с помощью свойства ICollectionView.CurrentItem значения свойства CollectionViewSource.View .
Если элементы в коллекции сами являются коллекциями или являются объектами, содержащими коллекции, коллекции можно отобразить как группы в более крупной коллекции. Для этого присвойте свойству IsSourceGrouped значение true. Если элементы содержат коллекции, но сами не являются коллекциями, необходимо также задать для свойства ItemsPath имя свойства коллекции.
Примечание
Установка для свойства Source другого экземпляра CollectionViewSource не поддерживается.
Конструкторы
CollectionViewSource() |
Инициализирует новый экземпляр класса CollectionViewSource . |
Свойства
Dispatcher |
Возвращает объект CoreDispatcher , с которым связан этот объект. CoreDispatcher представляет собой средство, которое может получить доступ к 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) |