Как мы можем показать линии сетки в управлении WPFListView?
Попробуйте эти ресурсы - они оба предлагают похожие простые решения, которые я успешно использовал в прошлом.
Вертикальные линии WPF ListView (горизонтальные в качестве бонуса
Как настроить линии сетки для моего ListView?
Обновление: ссылки теперь указывают на заархивированные копии веб-страниц, поскольку страницы были недоступны в течение некоторое время
Реализуйте настраиваемый GridViewRowPresenter и нарисуйте вертикальные линии в методе ArrangeOverride.
protected override Size ArrangeOverride(Size arrangeSize)
{
var size = base.ArrangeOverride(arrangeSize);
var children = Children.ToList();
EnsureLines(children.Count);
for (var i = 0; i < _lines.Count; i++)
{
var child = children[i];
var x = child.TransformToAncestor(this).Transform(new Point(child.ActualWidth, 0)).X + child.Margin.Right;
var rect = new Rect(x, -Margin.Top, 1, size.Height + Margin.Top + Margin.Bottom);
var line = _lines[i];
line.Measure(rect.Size);
line.Arrange(rect);
}
return size;
}
Затем используйте это для шаблона ListViewItem.
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Margin" Value="2,0,0,0"/>
<Setter Property="Padding" Value="0,2"/>
<Setter Property="BorderBrush" Value="LightGray"/>
<Setter Property="BorderThickness" Value="0,0,0,1"/>
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Border BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}">
<GridLines:GridViewRowPresenterWithGridLines
Columns="{TemplateBinding GridView.ColumnCollection}"
Margin="{TemplateBinding Padding}" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
</Trigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>