Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

ListViewに項目を表示する

エッセンシャル WPF P.124より引用

列の数、ヘッダの内容、およびビューに関するその他の事項を制御するためのプロパティは、ListViewにはありません。代わりに、ListView.ViewプロパティをGridViewに設定し、このオブジェクトのプロパティを設定する必要があります。

アプリ実行


ソースコード

App.xaml
<Application x:Class="HelloWorld.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="Page1.xaml">
</Application>
Page1.xaml
<Page x:Class="WpfApplication1.Page1"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d" 
	Title="Page1">

    <Grid>
        <StackPanel>
            <ListView x:Name="listView">
                <ListView.View>
                    <GridView>
                        <GridViewColumn
                            Width="100"
                            Header="名前"
                            DisplayMemberBinding="{Binding Path=Name}" />
                        <GridViewColumn
                            Width="100"
                            Header="年齢"
                            DisplayMemberBinding="{Binding Path=Age}" />
                    </GridView>
                </ListView.View>
            </ListView>
        </StackPanel>
    </Grid>
</Page>
Page1.xaml.cs
using System.Windows.Controls;

namespace WpfApplication1 {
    public partial class Page1 : Page {
        public Page1() {
            InitializeComponent();

            listView.ItemsSource = new Person[] {
                                        new Person() { Name = "山田", Age = 20 },
                                        new Person() { Name = "田中", Age = 21 },
                                        new Person() { Name = "鈴木", Age = 22 }};
        }
    }
}
Person.cs
namespace WpfApplication1 {
    internal class Person {
        public string Name { get; set; }
        public int Age { get; set; }
    }
}