[.NET] ListView, GridView

WPFでGrid風なリストを表示するときのクラスにListViewがある。これはListboxのderived class。
ListViewのViewプロパティをGridViewにすることでGrid風な表示が可能になる。たとえば以下のようなXAMLで個々のカラムをDataBindingで (DisplayMemberBinding ) 表示する。

           <ListView Name="listview">
                <ListView.View>
                    <GridView>
                        <GridViewColumn DisplayMemberBinding=
                          "{Binding Path=Number}"
                        Header="" Width="100"/>
                        <GridViewColumn DisplayMemberBinding=
                          "{Binding Path=DateTime}"
                        Header="" Width="100"/>
                        <GridViewColumn DisplayMemberBinding=
                          "{Binding Path=SourceIPAddress}"
                        Header="" Width="100"/>
                        <GridViewColumn DisplayMemberBinding=
                          "{Binding Path=SourceDeviceType}"
                        Header="" Width="100"/>
                        <GridViewColumn DisplayMemberBinding=
                          "{Binding Path=DestinationIPAddress}"
                        Header="" Width="100"/>
                        <GridViewColumn DisplayMemberBinding=
                          "{Binding Path=DestinationDeviceType}"
                        Header="" Width="100"/>
                    </GridView>
                </ListView.View>
            </ListView>

データの流し込みは、

listview.ItemsSource = myDataList;

のようにして、IEnumerableインタフェースを実装しているオブジェクトを割り当てることができる。ItemsSourceを思い出せずに嵌ったのでメモ。

配列やListなどがデータのソースとして使用できる。
GridViewは

  •  カラム入れ替え
  • リサイズ
  • 「ジャストフィット」(セパレータのダブルクリック)

をサポートしている。Gridクラスを使ってイベントを拾うことで実装できるはずだが、Microsoftのクラスよりも劣るものを時間をかけてつくってもしょうがない。あるものは使った方が楽。あるいは、Windows.FormsのDataGridViewを導入するという選択肢もある。
GridViewに要求されそうな機能の一つは、カラムヘッダのクリックでソートする機能。今の機能の豊富さを考えるとソートを付けていないのは不思議だ。

MSDNのListViewのhow to記事
http://msdn.microsoft.com/en-us/library/ms750972.aspx

広告

コメントを残す

コメントを投稿するには、以下のいずれかでログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。