我想在 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/