WPF Listview,对齐listview项水平动态不在xaml中

时间:2013-10-18 13:07:05

标签: wpf vb.net

如何在列表视图中动态对齐listview项目。

- 不在XAML -

lv.View = GridView

GridView.Columns.Add(New GridViewColumn With {.Header = "CrewId", .DisplayMemberBinding = New Binding("CrewId")})
GridView.Columns.Add(New GridViewColumn With {.Header = "FirstName", .DisplayMemberBinding = New Binding("FirstName")})
GridView.Columns.Add(New GridViewColumn With {.Header = "LastName", .DisplayMemberBinding = New Binding("LastName")})
GridView.Columns.Add(New GridViewColumn With {.Header = "Country", .DisplayMemberBinding = New Binding("Country")})
GridView.Columns.Add(New GridViewColumn With {.Header = "Rank", .DisplayMemberBinding = New Binding("Rank")})

Try
    lv.ItemsSource = dsCrew.Tables(0).DefaultView
Catch ex As Exception
    MsgBox(ex.Message)
End Try

1 个答案:

答案 0 :(得分:1)

您只需使用HorizontalContentAlignment属性来对齐所有ListViewItem

lv.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Right;

更新>>>

啊,这就是为什么这个解决方案不起作用的原因......你有多个专栏。当然,在你展示你的代码之前我无法说出来。好吧,我发现了一种方法可以将所有列对齐到右边......我知道这并不是你所追求的,但我会在这里添加它,直到找到更好的解决方案:

Style style = new Style(typeof(ListViewItem));
style.Setters.Add(new Setter(ListViewItem.HorizontalContentAlignmentProperty, 
    HorizontalAlignment.Right));
YourListView.ItemContainerStyle = style;

你可以在此期间解决剩下的问题。


更新2>>>

好的,所以我在网上搜索得很好,这是我最接近你的答案...在Tracy Sells的网站上有一篇名为How to center and right align text inside a GridViewColumn in a WPF ListView Control的文章,展示了如何在XAML中执行此操作...是的,我知道您希望在代码中使用它,但您必须在此处完成一些工作:

<ListView 
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.View>
        <GridView>
            <GridViewColumn>
                <TextBlock Text="MyText" TextAlignment="Center" />   
            </GridViewColumn>
        </GridView>
    <ListView.View>
</ListView>

我们可以调整我的第二段代码来实现ItemContainerStyle

Style style = new Style(typeof(ListViewItem));
style.Setters.Add(new Setter(ListViewItem.HorizontalContentAlignmentProperty, 
    HorizontalAlignment.Stretch));
YourListView.ItemContainerStyle = style;

不幸的是,这是我可以去的,因为我从未真正使用ListView。现在,您只需要了解如何在相关TextAlignment的内容上设置GridViewColumn。我注意到在代码中执行此类操作没有太大帮助,这仅仅是因为这是不是通常的做法。无论哪种方式,祝你好运,找到如何完成拼图的最后一部分。