首页 文章

使用CellTemplateSelector更改GridView单元格背景

提问于
浏览
1

我正在使用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;
  }
}

1 回答

  • 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以获取更多信息 .

相关问题