方法 : ListView の列の水平方向の配置を変更する
既定では、ListViewItem の各列の内容は左揃えで表示されます。 DataTemplate を使用し、DataTemplate 内の要素の HorizontalAlignment プロパティを設定すると、各列の配置を変更できます。 このトピックでは、ListView の内容の既定の配置について、および ListView の特定の列の配置を変更する方法について説明します。
使用例
次の例では、Title 列および ISBN 列のデータは左揃えです。
<!--XmlDataProvider is defined in a ResourceDictionary,
such as Window.Resources-->
<XmlDataProvider x:Key="InventoryData" XPath="Books">
<x:XData>
<Books >
<Book ISBN="0-7356-0562-9" Stock="in" Number="9">
<Title>XML in Action</Title>
<Summary>XML Web Technology</Summary>
</Book>
<Book ISBN="0-7356-1370-2" Stock="in" Number="8">
<Title>Programming Microsoft Windows With C#</Title>
<Summary>C# Programming using the .NET Framework</Summary>
</Book>
<Book ISBN="0-7356-1288-9" Stock="out" Number="7">
<Title>Inside C#</Title>
<Summary>C# Language Programming</Summary>
</Book>
<Book ISBN="0-7356-1377-X" Stock="in" Number="5">
<Title>Introducing Microsoft .NET</Title>
<Summary>Overview of .NET Technology</Summary>
</Book>
<Book ISBN="0-7356-1448-2" Stock="out" Number="4">
<Title>Microsoft C# Language Specifications</Title>
<Summary>The C# language definition</Summary>
</Book>
</Books>
</x:XData>
</XmlDataProvider>
...
<ListView ItemsSource="{Binding Source={StaticResource InventoryData}, XPath=Book}">
<ListView.View>
<GridView>
<GridViewColumn Width="300" Header="Title"
DisplayMemberBinding="{Binding XPath=Title}"/>
<GridViewColumn Width="150" Header="ISBN"
DisplayMemberBinding="{Binding XPath=@ISBN}"/>
</GridView>
</ListView.View>
</ListView>
ISBN 列の配置を変更するには、各 ListViewItem の HorizontalContentAlignment プロパティを Stretch に設定する必要があります。こうすると、各 ListViewItem の要素を各列の幅全体に広げて配置できます。 ListView はデータ ソースにバインドされているため、HorizontalContentAlignment を設定するスタイルを作成する必要があります。 次に、DisplayMemberBinding プロパティではなく DataTemplate を使用して内容を表示する必要があります。 各テンプレートの ISBN を表示するために DataTemplate に必要なのは、HorizontalAlignment プロパティを Right に設定した TextBlock のみです。
次の例では、ISBN 列を右揃えにするために必要なスタイルと DataTemplate を定義し、GridViewColumn を変更して DataTemplate を参照しています。
<!--The Style and DataTemplate are defined in a ResourceDictionary,
such as Window.Resources-->
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
<DataTemplate x:Key="ISBNTemplate">
<TextBlock HorizontalAlignment="Right"
Text="{Binding XPath=@ISBN}"/>
</DataTemplate>
...
<ListView ItemsSource="{Binding Source={StaticResource InventoryData}, XPath=Book}">
<ListView.View>
<GridView>
<GridViewColumn Width="300" Header="Title"
DisplayMemberBinding="{Binding XPath=Title}"/>
<GridViewColumn Width="150" Header="ISBN"
CellTemplate="{StaticResource ISBNTemplate}"/>
</GridView>
</ListView.View>
</ListView>
参照
処理手順
方法 : XMLDataProvider と XPath クエリを使用して XML データにバインドする