Setting Column Background in WPF ListView/Gridview
我正在寻找在WPF GridView中设置列的背景。 Google的许多结果都指向设置GridViewColumn.CellTemplate来更改列的外观。 但是,设置背景颜色时遇到了问题; 它不会拉伸以填充单元格:
这是我正在使用的xaml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <Window x:Class="ScratchPadWpf.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Width="300" Height="300"> <Grid> <ListView ItemsSource="{Binding}"> <ListView.View> <GridView> <GridViewColumn> <GridViewColumn.CellTemplate> <DataTemplate> <Grid Background="Red"> <TextBlock Text="{Binding FirstName}"/> </Grid> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> <GridViewColumn> <GridViewColumn.CellTemplate> <DataTemplate> <Grid Background="Yellow"> <TextBlock Text="{Binding LastName}"/> </Grid> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> </GridView> </ListView.View> </ListView> </Grid> </Window> |
和xaml.cs可以很好地衡量:
1 2 3 4 5 6 7 8 9 10 11 12 13 | public partial class Window1 : Window { public Window1() { InitializeComponent(); DataContext = new[] { new {FirstName ="Jim", LastName ="Bob"}, new {FirstName ="Frank", LastName ="Smith"}, new {FirstName ="Tooth", LastName ="Paste"}, }; } } |
将DataTemplate的Grid的宽度和高度设置为大于具有负边距的单元格可以产生接近的结果,但是如果您调整列的大小,则问题再次显示出来。
1 | <Grid Background="Yellow" Height="22" Width="50" Margin="-6"> |
有没有办法用颜色填充单元格?
设置
1 2 3 4 5 6 7 | <ListView ItemsSource="{Binding}"> <ListView.ItemContainerStyle> <Style TargetType="ListViewItem"> <Setter Property="HorizontalContentAlignment" Value="Stretch"/> </Style> </ListView.ItemContainerStyle> </ListView> |
结果:
挖了一个旧线程,但是我发现了一个躲避它的方法
1 2 3 | <Grid Background="{Binding backGround}" Margin="-6,0,-6,0"> <TextBlock Margin="6,0,6,0" Text="{Binding myText}" TextAlignment="Right" /> </Grid> |
移动页边距,使背景色填充整个单元格,然后将它们移回原处,以便文本仍位于正确的位置。 现在可以正常工作,直到正确修复为止。