3

我使用 WPF ListView 来显示数据。我创建了数据模型 [用作 ListView 的 DataContex],其中包含一个成员:

private CollectionViewSource itemEntryInfosView;

ListView 的 ItemsSource 设置为 itemEntryInfosView。假设 itemEntryInfosView 填充了从数据库下载的数据。

为了对数据进行排序[点击列后],我编写了以下方法:

    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 的来源是由 ItemEntry 类参数化的 ObserverableCollection(具有一些公共属性的简单类,ListView 为每个属性定义列)

一切都像 chram 一样工作,但我需要添加一个功能。我需要一个特殊的行来代表“添加新行”之类的东西。我认为这样的行可以从 ItemEntry 继承。该行应从排序中排除。(假设它应该始终位于 ListView 的末尾)。我怎样才能实现这样的功能?

4

2 回答 2

3

您可以使用CompositeCollection

<ListView>
    <ListView.ItemsSource>
        <CompositeCollection>
            <ListBoxItem Content="Add New" />
            <CollectionContainer Collection="{Binding Source={StaticResource ItemEntryInfosView}}" />
        </CompositeCollection>
    </ListView.ItemsSource>
</ListView>
于 2013-03-12T10:42:28.107 回答
0

一种选择可能是考虑已经为您提供功能的第三方控件。例如,WPF 扩展工具包包括一个DataGrid

于 2013-03-12T10:42:09.740 回答