昨日と同じ内容を、DataGridで表示してみます
<DataGrid ItemsSource="{Binding People}" />
とするとbindingしている内容が表示される模様
変わっているのは、表題部分をクリックするとデータをソートしてくれるところが便利かと思いましたが、他は何が違うのかは調べてみたいと思います
ListViewのようにHeaderは明示的に設定してませんが、メンバ名が表示される模様
ViewModel側は特に変えていないのでView側から見ていきます
--- View
<Window x:Class="DataGrid_130512.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:l="clr-namespace:DataGrid_130512"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<l:MainWindowViewModel />
</Window.DataContext>
<Grid>
<!-- 基本的にここを変えただけ -->
<DataGrid ItemsSource="{Binding People}" />
</Grid>
</Window>
--- ViewModel
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 DataGrid_130512
{
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", 6));
_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;
}
}
}
0 件のコメント:
コメントを投稿