我使用 WPF ListView 来显示数据。我创建了数据模型 [用作 ListView 的 DataContex],它包含一个成员:
private CollectionViewSource itemEntryInfosView;
ListView 的 ItemsSource 设置为 itemEntryInfosView。假设 itemEntryInfosView 填充了从数据库下载的数据。
为了对数据进行排序 [afer column click] 我编写了以下方法:
public void SortList_OnExecuting(object parameter)
{
var sortColumn = (string)parameter;
this.itemEntryInfosView.SortDescriptions.Clear();
if (this.sortAscending)
{
this.itemEntryInfosView.SortDescriptions.Add(
new SortDescription(sortColumn, ListSortDirection.Ascending));
this.sortAscending = false;
}
else
{
this.itemEntryInfosView.SortDescriptions.Add(
new SortDescription(sortColumn, ListSortDirection.Descending));
this.sortAscending = true;
}
}
假设 itemEntryInfoView 的 source 是由 ItemEntry 类参数化的 ObserverableCollection(具有一些公共(public)属性的简单类,ListView 为每个属性定义列)
一切正常,但我需要添加一项功能。我需要一个特殊的行来表示“添加新行”之类的东西。我认为这样的行可以继承自 ItemEntry。 该行应从排序中排除。(假设该行应始终位于 ListView 的末尾)。我怎样才能实现这样的功能?
最佳答案
您可以使用CompositeCollection
:
<ListView>
<ListView.ItemsSource>
<CompositeCollection>
<ListBoxItem Content="Add New" />
<CollectionContainer Collection="{Binding Source={StaticResource ItemEntryInfosView}}" />
</CompositeCollection>
</ListView.ItemsSource>
</ListView>
关于c# - 从 ListView 排序中排除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15358766/