CollectionViewSource
, ICollectionView
,ListCollectionView
和IList
之间有什么区别BindingListCollectionView
?
何时何地使用所有这些集合?
我知道. CollectionViewSource
_CollectionViewSource
ListCollectionView
你能解释一下每种集合的确切区别和用例吗?
CollectionViewSource
, ICollectionView
,ListCollectionView
和IList
之间有什么区别BindingListCollectionView
?
何时何地使用所有这些集合?
我知道. CollectionViewSource
_CollectionViewSource
ListCollectionView
你能解释一下每种集合的确切区别和用例吗?
基本上,CollectionView 是一种在 WPF 中以最简单的方式构建 Master Ditail View 的方法。首先,我想向您介绍回退机制。
<Window.Resources>
<x:Array x:Key="planets" Type="{x:Type local:Planets}">
<local:Planets Name="Earth" Diameter="12,756 km" Mass="5.97 10^24kg" Density="5514 kg/m³"/>
<local:Planets Name="Mars" Diameter="6792 km" Mass="0.642 10^24kg" Density="3933 kg/m³"/>
<local:Planets Name="Jupiter" Diameter="142,984 km" Mass="1898 10^24kg" Density="1326 kg/m³"/>
</x:Array>
</Window.Resources>
<DockPanel DataContext="{StaticResource planets}">
<ListBox ItemsSource="{Binding}"
IsSynchronizedWithCurrentItem="True"
DisplayMemberPath="Name" Width="125"/>
<StackPanel>
<TextBlock Text="{Binding Name}"/>
<TextBlock Text="{Binding Diameter}"/>
<TextBlock Text="{Binding Mass}"/>
<TextBlock Text="{Binding Density}"/>
</StackPanel>
</DockPanel>
public class Planets
{
public string Name { get; set; }
public string Diameter { get; set; }
public string Mass { get; set; }
public string Density { get; set; }
}
我们有一个简单的 type 数组Planets
。DisplayMemberPath-Property也已设置Name
,因此行星名称显示在ListBox
. 除了 之外ListBox
,各个星球的详细信息都显示在 中TextBlock
。Vourla,我们有我们的工作主细节视图,隐含使用CollectionView
通过后备机制
由于设置了属性,WPF会在后台IsSynchronizedWithCurrentItem="True"
生成 a并将在 中选择的对象保存在. 现在是第一个搜索数组上的 的情况;它在那里找不到任何东西,但后备机制将其转发到. 也可以直接引用的。为此,在.Default-CollectioView
ListBox
CurrentItem-Property
Binding
TextBlock
Property
Planets[]
CurrentItem-Property
Default-CollectionView
CurrentItem-Property
Default-CollectionView
(/)
Property
Binding
<TextBlock Text="{Binding /Name}"/>
回退机制仅在Path-Property
设置 的情况下才有效Binding
。
CollectionViewSource
派生自CollectionView
并且是提供某些Properties
诸如Source
或的代理View
。
还有其他三个派生自 的类CollectionView
,它们ItemCollection
是ListCollectionView
和BindingListCollectionView
。类的接口,即它们前面的类型,是为了避免与类直接耦合。遵循的原则称为依赖注入(I)
这三个类 ItemCollection
,ListCollectionView
并且BindingListCollectionView
是为不同的目的而设计的。ItemCollection
因此提供了一个IEnumerabl
e、ListCollectionView
anIList
和BindingListCollectionView
一个IBindingList
Object。因此,为不同的目的提供了不同的类型。
总而言之,CollectionView
是一款功能强大的WPF工具;您可以排序、分组等并显示详细信息。
我希望这可以进一步帮助您。问候迈克尔