スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: スポンサー広告

Listをバインディングしても、実際に連動するのはView

DataGridのItemsSourceプロパティにIList<>型をデータバインディングさせ、画面上で列をクリックしてソートを行っても、バインディングしたリスト内の順序がそのとおりになっているか?というとそんな事はない。連動するものだと思ってたら、あれ?となる。
これは、Listそのものではなく、そこから作ったViewをDataGridと連動させているから。なので、ViewModel側からソートしてたり、フィルタリングやグルーピングを行いたいときは、このViewを取得して、そのビューのメソッドを使う必要がある。
Listから、ビュー(基底)を取得しようと思った時は、以下のようにする。

using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Data;
...

var PersonsList = new List(3) {
new PersonData {FirstName = "太郎", SecondName = "田和牟礼",
Age=20, Birthday = DateTime.Today.AddYears(-20)}
,new PersonData {FirstName = "二郎", SecondName = "田和牟礼",
Age=16, Birthday = DateTime.Today.AddYears(-16)}
,new PersonData {FirstName = "三郎", SecondName = "田和牟礼",
Age=12, Birthday = DateTime.Today.AddYears(-12)}
};

//ビュー(既定)を取得する。
var listView = CollectionViewSource.GetDefaultView(PersonsList);

listViewは、ICollectionViewインターフェース実装オブジェクトとなる。
特に自分で実装しない限り、ListCollectionViewクラスとなる。
ListCollectionView クラス
以下のプロパティを持つ
CanSort:ソート可能か。値はtrue
CanGroup:グルーピング可能か。値はtrue
CanFilter:フィルタリング可能か。値はtrue
編集系
CanAddNew:新規アイテムを追加可能か。値はtrue
CanRemove:アイテムを削除可能か。値はtrue

どおりで普通にリスト型をバインドさせてもソートとかできるわけだと理解できた。
スポンサーサイト
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4 | コメント: 0 | トラックバック: 0


この記事へのコメント

コメントの投稿

非公開コメント


サイドバー背後固定表示サンプル

当ブログに書かれたソースコードは流用自由です。

バグ、スペルミス等はありうる事です。

ご利用の際は自己責任でお願いしますm(_ _)m

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。