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 は各プロパティの列を定義します) 。

すべてがチャラムのように機能していますが、機能を追加する必要があります。「新しい行を追加」のようなものを表す特別な行が必要です。そのような行は 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

1 つのオプションは、既に機能を提供しているサード パーティ製のコントロールを検討することです。たとえば、WPF 拡張ツールキットにはDataGridが含まれています。

于 2013-03-12T10:42:09.740 に答える