C# 使用CellTemplateSelector更改GridView单元格背景

C# 使用CellTemplateSelector更改GridView单元格背景,c#,wpf,xaml,listview,gridview,C#,Wpf,Xaml,Listview,Gridview,我正在使用CellTemplateSelector更改具有特定值的特定单元格的单元格背景色。但是,我无法获得填充单元格的单元格背景颜色;它拥抱内容。以下是我的标记: <DataTemplate x:Key="Template1"> <Grid Background="#C0D9AF"> <TextBlock Text="{Binding Path=Value}" /> </Grid> </DataTemplate> &

我正在使用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; } } 私有类CellTemplateSelector:DataTemplateSelector { 公共覆盖数据模板SelectTemplate(对象项, DependencyObject(对象容器) { 返回((FrameworkElement)容器)。FindResource(条件 ?“模板1” :“Template2”)作为数据模板; } }
将模板更改为使用带背景色的只读文本框,并将ListViewItem的HorizontalContentAlignment设置为Stretch:

<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>

您还可以查看此文档以了解更多信息