我需要在ListView中显示一个集合。为此,我有一个带有一个ListViewItem的CompositeCollection作为该集合的搜索栏。我将其与“ n”项列表放在一起。这样做的原因是,我需要搜索栏不受排序的影响。问题是,我绑定到CollectionViewSource的CollectionView会产生BindingError,我不知道为什么。
我的集合的XAML代码:
<Grid.Resources>
<CollectionViewSource x:Key="ElementSource" Source="{Binding ElementsCollectionView}"/>
<CompositeCollection x:Key="CompositeCollection">
<ListViewItem Content="{Binding HeaderRow}"/>
<CollectionContainer Collection="{Binding Source={StaticResource ElementSource}}"/>
</CompositeCollection>
</Grid.Resources>
还有我使用的收藏集
private NotifyCollection<DataEntry> _data;
public NotifyCollection<DataEntry> Data
{
get { return this._data; }
set { this.SetProperty(ref this._data, value); }
}
private CollectionView _elementsCollectionView;
public CollectionView ElementsCollectionView
{
get { return this._elementsCollectionView; }
set
{
if (value == null) return;
this._elementsCollectionView = value;
}
}
private CompositeCollection _tableItems;
public CompositeCollection TableItems
{
get { return this._tableItems; }
set { this.SetProperty(ref this._tableItems, value); }
}
private DataEntry _headerRow;
public DataEntry HeaderRow
{
get { return this._headerRow; }
set { this.SetProperty(ref this._headerRow, value); }
}
正在启动收藏集:
public void SetCollection()
{
this.TableItems.Add(this.HeaderRow);
this.TableItems.Add(this.ElementsCollectionView);
}
this.TableViewModel.ElementsCollectionView =
(CollectionView)CollectionViewSource.GetDefaultView(this.Data);
如您所见,一切似乎都还不错。 NotifyCollection继承自ObservableCollection,应进行工作。如果我将HeaderRow添加到“ ElementsCollectionView”,则所有工作正常,但HeaderRow已排序。如果我将CollectionView添加到CollectionViewSource,则会得到BindingError:
System.Windows.Data Error: 5 : Value produced by BindingExpression is
not valid for target property.;
Value='System.Windows.Data.ListCollectionView'
BindingExpression:Path=ElementsCollectionView;
DataItem='AuftragsverwaltungDataTableViewModel' (HashCode=57170378);
target element is 'CollectionViewSource' (HashCode=52642430); target property is 'Source' (type 'Object')
答案 0 :(得分:0)
您不能将Source
的{{1}}属性设置为CollectionViewSource
。这将抛出ListCollectionView
。对ArgumentException
集合进行排序,然后绑定到该集合。