gpt4 book ai didi

wpf - 如何在WPF中为listviewitem添加垂直线

转载 作者:行者123 更新时间:2023-12-01 22:17:37 24 4
gpt4 key购买 nike

我正在尝试在 ListViewItem 的列之间放置垂直线。我尝试了给出的解决方案。但它不起作用。谁能帮我解决这个问题。我为 ListViewItem 创建了一个单独的样式。我需要在样式中添加一些属性吗?

代码是这样的

<ListView x:Key="ListView1" ItemContainerStyle="{DynamicResource ListViewItemStyle1}">
<ListView.View>
<GridView>
<GridViewColumn Header="{TemplateBinding GridView.ColumnCollection}">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Border BorderBrush="#FF000000" BorderThickness="1,0,0,0" Margin="-6,-2,-6,-2">
<StackPanel Margin="6,2,6,2">
<TextBlock Text="{TemplateBinding Content}"/>
</StackPanel>
</Border>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>

从字面上看它应该有效,但它不起作用。我无法使用上面的代码添加垂直线..

最佳答案

这是一个带有 ListView 和两列的简短示例。诀窍是定义一个带有边框的 DataTemplate,拉伸(stretch)边框以填充单元格(请参阅 ItemContainerStyle、Style ListViewItem、H/V-ContentAligment=Stretch)并显示(在本例中)右侧和底线(通过 BorderThickness= “0,0,1,1”)。对于您的情况,请使用 BorderThickness="0,0,1,0"

    <ListView ItemsSource="{Binding}">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
<Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
</Style>
</ListView.ItemContainerStyle>
<ListView.Resources>
<DataTemplate x:Key="NameTemplate">
<Border BorderThickness="0,0,1,1" BorderBrush="LightGray" Margin="-6,0,-6,0">
<TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding Name}" VerticalAlignment="Center" TextTrimming="CharacterEllipsis"></TextBlock>
</Border>
</DataTemplate>
<DataTemplate x:Key="ActualValueTemplate">
<Border BorderThickness="0,0,1,1" BorderBrush="LightGray" Margin="-6,0,-6,0">
<TextBlock Name="ActualValueTextBlock" Margin="2,1,1,1" Text="{Binding TextMeasuredValue}" VerticalAlignment="Center"></TextBlock>
</Border>
</DataTemplate>
</ListView.Resources>
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="Name" CellTemplate="{StaticResource NameTemplate}"></GridViewColumn>
<GridViewColumn Header="Actual Value" CellTemplate="{StaticResource ActualValueTemplate}"></GridViewColumn>
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>

编辑:
我使用了您的源代码并做了一些小的修改:

<ListView ItemContainerStyle="{DynamicResource ListViewItemStyle1}">
<ListView.View>
<GridView>
<GridViewColumn Header="My Header">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Border BorderBrush="#FF000000" BorderThickness="1,0,1,0" Margin="-6,-2,-6,-2">
<StackPanel Margin="6,2,6,2">
<TextBlock Text="{TemplateBinding Content}"/>
</StackPanel>
</Border>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
<ListViewItem>Hello</ListViewItem>
<ListViewItem>Stack</ListViewItem>
<ListViewItem>Overflow</ListViewItem>
</ListView>

结果是这样的:
ListView with vertical lines

我在右侧添加了垂直线以获得更好的可见性,并且边框没有拉伸(stretch)到单元格的边界 - 好吧,所以它看起来有点难看。但正如您所看到的,它正在发挥作用。

关于wpf - 如何在WPF中为listviewitem添加垂直线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5645078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com