我使用CellTemplateSelector来更改具有特定值的特定单元格的单元格背景颜色。但是,我无法获得细胞背景颜色来填充细胞;它拥抱内容。这是我的标记:
<DataTemplate x:Key="Template1"> <Grid Background="#C0D9AF"> <TextBlock Text="{Binding Path=Value}" /> </Grid> </DataTemplate> <DataTemplate x:Key="Template2"> <Grid Background="#FFFCCF"> <TextBlock Text="{Binding Path=Value}" /> </Grid> </DataTemplate>
我的代码:
private class CellTemplateSelector : DataTemplateSelector { public override DataTemplate SelectTemplate(object item, DependencyObject container) { return ((FrameworkElement)container).FindResource(condition ? "Template1" : "Template2") as DataTemplate; } }
答案 0 :(得分:2)
更改模板以使用具有背景颜色的只读TextBox,并将ListContentAlignment设置为Stretch for ListViewItem:
<DataTemplate x:Key="Template1">
<Grid>
<TextBox Text="{Binding Value}" Background="Crimson" IsReadOnly="True" />
</Grid>
</DataTemplate>
<DataTemplate x:Key="Template2">
<Grid>
<TextBox Text="{Binding Value}" Background="HotPink" IsReadOnly="True" />
</Grid>
</DataTemplate>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
您还可以查看此answer以获取更多信息。