Tôi muốn có một biên giới xung quanh ListViewItem (hàng trong trường hợp của tôi). ListView nguồn và cột được tạo ra trong thời gian chạy. Trong XAML tôi có cấu trúc này:Làm thế nào tôi có thể thêm đường viền vào ListViewItem, ListView trong chế độ GridView
<ListView Name="listViewRaw">
<ListView.View>
<GridView>
</GridView>
</ListView.View>
</ListView>
Trong Runtime i ràng buộc listview để DataTable, thêm các cột cần thiết và bindings:
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());
Vì vậy, tôi muốn thêm đường viền bao quanh mỗi hàng, và hành vi biên giới set (màu vv) với DataTriggers (ví dụ: nếu giá trị trong cột 1 = "Có thể nhìn thấy", hãy đặt màu đường viền thành màu đen). Tôi có thể đặt đường viền qua DataTemplate trong ItemTemplate không? Tôi biết giải pháp, nơi bạn thao tác với CellTemplates, nhưng tôi không thực sự thích nó. Tôi muốn một cái gì đó như thế này nếu điều này thậm chí có thể.
<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>
Cảm ơn bạn! Tôi đã thử nghiệm trên DataTemplate theo nhiều cách, tất cả những gì tôi phải làm là chuyển nó sang ControlTemplate, một điều nữa, với GridView, nên sử dụng GridViewRowPresenter thay vì :) – Andrew