Изменить фон ячейки GridView с помощью CellTemplateSelector - PullRequest
1 голос
/ 12 марта 2011

Я использую 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 голосов
/ 13 марта 2011

Измените ваши шаблоны, чтобы использовать TextBox, доступный только для чтения, с цветом фона, и установите для HorizontalContentAlignment значение Stretch для 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>

Вы также можете взглянуть на этот ответ для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...