「東雲 忠太郎」の平凡な日常のできごと

「東雲 忠太郎」の平凡な日常のできごと

2024.03.12
XML
カテゴリ: C#.NET


`ObservableCollection`は、要素が追加、削除、またはリスト全体が更新されると、データ バインドを更新するクラスです。`ObservableCollection`をソートする場合、一般的な手法は`CollectionView`を使用して行います。以下は、`CollectionView`を使用して`ObservableCollection`をソートするサンプルコードです。


```csharp

using System.Collections.ObjectModel;

using System.ComponentModel;

using System.Windows.Data;


public class MainViewModel : INotifyPropertyChanged

{

    private ObservableCollection<string> _items;

    public ObservableCollection<string> Items

    {

        get { return _items; }

        set

        {

            _items = value;

            OnPropertyChanged(nameof(Items));

        }

    }


    public MainViewModel()

    {

        Items = new ObservableCollection<string>

        {

            "Apple",

            "Banana",

            "Orange",

            "Grapes"

        };


        // CollectionViewSourceを作成し、ItemsSourceにObservableCollectionを設定

        CollectionViewSource collectionViewSource = new CollectionViewSource();

        collectionViewSource.Source = Items;


        // ソートの定義

        collectionViewSource.SortDescriptions.Add(new SortDescription("", ListSortDirection.Ascending));


        // ソート済みのビューを取得し、Itemsに設定

        Items = new ObservableCollection<string>((ListCollectionView)collectionViewSource.View);

    }


    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged(string propertyName)

    {

        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));

    }

}

```


この例では、`MainViewModel`クラス内で`ObservableCollection<string>`の`Items`プロパティを作成し、コンストラクターでいくつかのアイテムを追加しています。その後、`CollectionViewSource`を作成し、`SortDescriptions`プロパティを使用してソートの方法を指定します。最後に、ソート済みのビューを取得し、`Items`プロパティに設定しています。


ソートの定義では、`SortDescription`クラスを使用して、ソートするプロパティ名とソート方向を指定します。ここでは、プロパティ名が空白の場合はデフォルトのソートプロパティが使用されます。


これで、`Items`プロパティにバインドされたWPFのコントロールは、ソートされた状態で表示されます。






お気に入りの記事を「いいね!」で応援しよう

Last updated  2024.03.12 04:41:01


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

© Rakuten Group, Inc.
X
Create a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: