我想在ListViewItem周围有一个边框(在我的例子中是行).在运行时生成的ListView源和列.在XAML中我有这样的结构:
<ListView Name="listViewRaw">
<ListView.View>
<GridView>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)
在运行期间,我将listview绑定到DataTable,添加必要的列和绑定:
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());
Run Code Online (Sandbox Code Playgroud)
所以我想在每行周围添加边框,并使用DataTriggers设置边框行为(颜色等)(例如,如果第1列中的值="可见",则将边框颜色设置为黑色).我可以在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>
Run Code Online (Sandbox Code Playgroud)
Tia*_*o S 17
假设您使用带有GridView设置的ListView作为View,则默认情况下ListView不显示垂直或水平线.
如果你想添加horitzontal线,那么你可以改变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>
...
Run Code Online (Sandbox Code Playgroud)
Ams*_*nna 12
您必须在ControlTemplate中设置边框
<Style x:Key="BorderedItem" TargetType="ListViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<Border Name="Border" BorderBrush="Transparent" BorderThickness="2">
<ContentPresenter />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
现在,您可以在ListView中设置此样式
<ListView ItemContainerStyle="{StaticResource BorderedItem}" />
Run Code Online (Sandbox Code Playgroud)