Aracılığıyla paylaş


Nasıl yapılır: ListView İçerisindeki Bir Sütunun Yatay Hizalamasını Değiştirme

Varsayılan olarak, içindeki ListViewItem her sütunun içeriği sola hizalanır. içindeki öğesinde DataTemplatebir DataTemplate ve ayarlayarak her sütunun HorizontalAlignment hizalamasını değiştirebilirsiniz. Bu konu başlığında, bir ListView öğesinin içeriğini varsayılan olarak nasıl hizaladığı ve içindeki ListViewbir sütunun hizalamasını nasıl değiştireceği gösterilir.

Örnek

Aşağıdaki örnekte ve ISBN sütunlarındaki Title veriler sola hizalanır.

<!--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>

Sütunun ISBN hizalamasını değiştirmek için, her ListViewItem birinin özelliğinin HorizontalContentAlignment olduğunu Stretchbelirtmeniz gerekir; böylece her ListViewItem sütundaki öğeler her sütunun tüm genişliği boyunca yayılabilir veya konumlandırılabilir. ListView bir veri kaynağına bağlı olduğundan, öğesini ayarlayan HorizontalContentAlignmentbir stil oluşturmanız gerekir. Ardından, özelliğini kullanmak yerine içeriği görüntülemek için bir DataTemplate kullanmanız DisplayMemberBinding gerekir. Her şablonun öğesini ISBN görüntülemek için, DataTemplate yalnızca özelliği olarak Rightayarlanmış bir TextBlockHorizontalAlignment içerebilir.

Aşağıdaki örnek, sütunu sağa hizalamak için ISBN gereken stili ve DataTemplate öğesini tanımlar ve öğesine başvurmak DataTemplateiçin öğesini GridViewColumn değiştirir.

<!--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>

Ayrıca bkz.