c# - 从 ListView 排序中排除项目

标签 c# wpf listview sorting

我使用 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/

相关文章:

c# - StatusStrip - 添加一个右侧没有下拉箭头的按钮

C#:获取有关域中计算机的信息

android - 刷新listview/显示新添加的数据到listview android

c# - 修改列单元格中的文本并使其成为超链接,listView WPF C#

c# - WPF:将 ListView 与多个源绑定(bind)

c# - 固定一个函数指针

c# - 如何将单元测试项目添加到现有 MVC3 应用程序(从空模板)

c# - 将多个 ComboBoxes 绑定(bind)到同一个 ItemsSource 会导致问题

WPF - DataTemplates 的参数?

c# - 只有 XAML 的数据网格的 WPF 焦点行