MSDNでもどちらをチョイスするかの基準が記載されています
http://msdn.microsoft.com/ja-jp/library/aa511485.aspx
以下抜粋します
リスト ボックス | リスト ビュー | |
データ型 | データとプログラム オプションの両方。 | データのみ。 |
コンテンツ | ラベルのみ。 | ラベルおよび補助データ。複数列の場合もあります。 |
対話操作 | 選択に使用。 | 選択に使用。ただし、多くの場合はデータの表示と対話操作のために使用されます。ドラッグ ソースまたはドロップ ターゲットとなることができます。 |
提示方法 | 固定。 | ビューの変更、グループ化、列ごとの並べ替え、列の幅と順序の変更が可能です。 |
- 一覧に表示されるものが、プログラム オプションではないデータかどうか。該当しない場合は、代わりにリスト ボックスを使用することを検討します。
- ビューの変更、グループ化、列ごとの並べ替え、列の幅と順序の変更が必要かどうか。該当しない場合は、代わりにリスト ボックスを使用します。
- コントロールが、ドラッグ ソースまたはドロップ ターゲットとして機能する必要があるかどうか。該当する場合は、リスト ビューを使用します。
- リスト アイテムをクリップボード経由でコピーする必要があるかどうか。該当する場合は、リスト ビューを使用します。
ちょっと使ってみます
--- ViewModel側(ListBoxのコードにもうひと項目追加)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Practices.Prism.ViewModel;
using System.Collections.ObjectModel;
using System.Windows;
namespace ListViewTest_130508
{
public class MainWindowViewModel : NotificationObject
{
ObservableCollection<Person> _people = new ObservableCollection<Person>();
public ObservableCollection<Person> People
{
get { return _people; }
set { _people = value; }
}
/// <summary>
/// コンストラクタ
/// </summary>
public MainWindowViewModel()
{
// 表示データの生成
_people.Add(new Person("Stan Hansen", 3));
_people.Add(new Person("Bruiser Brody", 5));
_people.Add(new Person("Terry Funck", 10));
}
/// <summary>
/// 選択されている人
/// </summary>
public Person SelectedPerson { get; set; }
public void Execute()
{
if (SelectedPerson != null)
{
MessageBox.Show(SelectedPerson.Name);
}
else
{
MessageBox.Show("選択されていてません");
}
}
}
// ListBoxに表示するデータ
public class Person
{
public string Name { get; set; }
public int TitleCount { get; set; }
/// <summary>
/// コンストラクタ
/// </summary>
/// <param name="name"></param>
/// <param name="count"></param>
public Person(string name, int count)
{
Name = name;
TitleCount = count;
}
}
}
--- View側
"<GridViewColumn>"の部分がミソでしょうか
<Window x:Class="ListViewTest_130508.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:l="clr-namespace:ListViewTest_130508"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<l:MainWindowViewModel />
</Window.DataContext>
<Grid>
<ListView x:Name="listView1"
ItemsSource="{Binding People}"
SelectedItem="{Binding SelectedPerson}"
SelectionMode="Multiple" >
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="Name"
Width="150"
DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Header="Title Count"
Width="100"
DisplayMemberBinding="{Binding TitleCount}" />
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>
0 件のコメント:
コメントを投稿