.net - 如何在 GridView 模式下向 ListViewItem、ListView 添加边框

标签 .net wpf listview

我想在 ListViewItem 周围有一个边框(在我的例子中是行)。运行时生成的 ListView 源和列。在 XAML 我有这个结构:

<ListView Name="listViewRaw">
   <ListView.View>
      <GridView>
      </GridView>
   </ListView.View>
</ListView>

在运行时,我将 listview 绑定(bind)到 DataTable,添加必要的列和绑定(bind):
        var view = (listView.View as GridView);
        view.Columns.Clear();   
        for (int i = 0; i < table.Columns.Count; i++)
        {
            GridViewColumn col = new GridViewColumn();
            col.Header = table.Columns[i].ColumnName;
            col.DisplayMemberBinding = new Binding(string.Format("[{0}]", i.ToString()));
            view.Columns.Add(col);
        }

        listView.CoerceValue(ListView.ItemsSourceProperty);

        listView.DataContext = table;
        listView.SetBinding(ListView.ItemsSourceProperty, new Binding());

所以我想在每一行周围添加边框,并使用 DataTriggers 设置边框行为(颜色等)(例如,如果第一列中的值 =“可见”,则将边框颜色设置为黑色)。
我可以通过 ItemTemplate 中的 DataTemplate 设置边框吗?我知道解决方案,您可以在其中使用 CellTemplates 进行操作,但我不太喜欢它。如果可能的话,我想要这样的东西。
<DataTemplate>
   <Border Name="Border" BorderBrush="Transparent" BorderThickness="2">
      <ListViewItemRow><!-- Put my row here, but i ll know about table structure only during runtime --></ListViewItemRow>
   </Border>
</DataTemplate>

最佳答案

假设您使用的 ListView 将 GridView 设置为 View,则 ListView 默认情况下不显示垂直线或水平线。

如果要添加水平线,则可以更改 ListViewItem 上的边框,例如:

<ListView ...>
    <ListView.ItemContainerStyle>
        <Style TargetType="{x:Type ListViewItem}">
            <Setter Property="BorderBrush" Value="LightGray" />
            <Setter Property="BorderThickness" Value="0,0,0,1" />
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.View>
        <GridView>
            <GridViewColumn ... />
        </GridView>
    </ListView.View>
    ...

关于.net - 如何在 GridView 模式下向 ListViewItem、ListView 添加边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2816731/

相关文章:

android - 如何在 ListView 中获取 Spinner

.net - StringWriter 或 StringBuilder

jquery - 使用 jQuery 启用/禁用 .NET 4.0 按钮

c# - 如何通过 ObjectDataProvider 将 ComboBox 绑定(bind)到通用字典

android - 如何从 ListView 中获取一个参数

asp.net - 在 DataBound 事件上获取绑定(bind)到 ListView 的数据

c# - 在从过程代码调用 Execute 之前,我应该检查 ICommand 的 CanExecute 方法吗?

c# - C# 在同一个套接字上发送+接收数据

c# - 自定义 CollectionViewType 不支持使用 shift 键进行多选

c# - 可以在包装面板 wpf 中通过虚拟化实现平滑滚动吗?