共用方式為


如何:變更 ListView 中資料行的水平對齊

根據預設,ListViewItem 中每個資料行的內容會靠左對齊。 您可以藉由提供 DataTemplate,並在 DataTemplate 內的元素上設定 HorizontalAlignment 屬性,來變更每個資料行的對齊方式。 本主題說明 ListView 如何預設對齊其內容,以及如何變更 ListView 中一個資料行的對齊方式。

範例

在下列範例中,TitleISBN 資料行中的資料會靠左對齊。

<!--XmlDataProvider is defined in a ResourceDictionary, 
    such as Window.Resources-->
<XmlDataProvider x:Key="InventoryData" XPath="Books">
    <x:XData>
        <Books xmlns="">
            <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 資料行的對齊方式,您必須指定每個 ListViewItemHorizontalContentAlignment 屬性是 Stretch,讓每個 ListViewItem 中的元素可以跨越或沿著每個資料行的整個寬度定位。 由於 ListView 繫結至資料來源,因此您必須建立設定 HorizontalContentAlignment 的樣式。 接下來,您必須使用 DataTemplate 來顯示內容,而不是使用 DisplayMemberBinding 屬性。 若要顯示每個範本的 ISBNDataTemplate 只能包含 TextBlock,其 HorizontalAlignment 屬性設定為 Right

下列範例會定義讓 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>

另請參閱