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

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

2024.03.14
XML
カテゴリ: C#.NET


`CollectionViewSource`は、WPFでデータをフィルタリング、並べ替え、グループ化するための機能を提供します。以下は、`CollectionViewSource`を使用してデータをフィルタリングするサンプルコードです。


まず、XAMLファイルで`CollectionViewSource`を定義します。


```xml

<Window x:Class="CollectionViewSourceExample.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="MainWindow" Height="450" Width="800">

    <Window.Resources>

        <CollectionViewSource x:Key="MyDataView" Source="{Binding MyData}" Filter="MyDataView_Filter"/>

    </Window.Resources>

    <Grid>

        <ListBox ItemsSource="{Binding Source={StaticResource MyDataView}}"/>

    </Grid>

</Window>

```


この例では、`CollectionViewSource`を`MyDataView`として定義し、`MyData`プロパティからデータを取得します。また、`Filter`イベントハンドラを指定して、データのフィルタリングを行います。


次に、ビューモデルでデータを定義し、`CollectionViewSource`にバインドします。


```csharp

using System;

using System.Collections.ObjectModel;

using System.ComponentModel;

using System.Windows.Data;


namespace CollectionViewSourceExample

{

    public class MainViewModel

    {

        public ObservableCollection<string> MyData { get; set; }

        public ICollectionView MyDataView { get; set; }


        public MainViewModel()

        {

            MyData = new ObservableCollection<string>

            {

                "Item 1",

                "Item 2",

                "Item 3",

                "Item 4",

                "Item 5"

            };


            MyDataView = CollectionViewSource.GetDefaultView(MyData);

            MyDataView.Filter = MyDataView_Filter;

        }


        private bool MyDataView_Filter(object item)

        {

            // "Item"で始まる文字列のみ表示

            return (item as string)?.StartsWith("Item") == true;

        }

    }

}

```


この例では、`MainViewModel`で`MyData`プロパティにデータを設定し、そのデータを`CollectionViewSource`のソースとして使用します。また、`MyDataView_Filter`メソッドでデータのフィルタリングロジックを定義します。


これで、`CollectionViewSource`を使用してデータをフィルタリングするサンプルコードが完成しました。






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

Last updated  2024.03.14 04:52:19


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

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