2008-12-05 12 views
20

Quiero establecer el color de fondo para una GridViewColumn enlazada a datos dentro de una vista de lista en WPF. No estoy seguro de cómo hacer que esta pregunta sea bastante nueva para WPF; de lo contrario, no los habría molestado a todos ustedes.Cómo establecer el color de fondo en función de la propiedad bool en WPF

Quiero cambiar el color de fondo de toda la fila, basado en un indicador bool en mi objeto de datos.

En este caso, tengo, bueno, un objeto "CaseDetail", que cuando hay notas internas "IsInternalNote" quiero que cambie el color de la fila.

¿Cómo puedo hacer esto en WPF?

Lo que tengo ahora, (muy simple), que NO cambia el color.

<ListView ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True" > 
      <ListView.View> 
       <GridView> 
        <GridViewColumn DisplayMemberBinding="{Binding Date, StringFormat=MMM dd\, yyyy h:mm tt}" Header="Date" Width="Auto" /> 
        <GridViewColumn DisplayMemberBinding="{Binding SubmittedBy}" Header="Submitted By" Width="Auto" /> 
        <GridViewColumn Width="Auto" Header="Description" x:Name="colDesc"> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate>        
           <ScrollViewer MaxHeight="80" Width="300"> 
            <StackPanel Orientation="Vertical"> 
             <TextBlock Text="{Binding Description}" TextWrapping="Wrap" /> 
             <TextBlock Text="{Binding File.FileName}" TextWrapping="Wrap" /> 
            </StackPanel> 
           </ScrollViewer>        
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn>      
       </GridView> 
      </ListView.View> 
     </ListView> 

Respuesta

30

me encontré con un par de problemas que tratan de hacer esto, terminó igual que

<ListBox ...> 
    <ListBox.ItemTemplate> 
    <DataTemplate> 
     <Border x:Name="BGBorder"> 
     <!-- --> 
     </Border> 
     <DataTemplate.Triggers> 
     <DataTrigger 
      Binding="{Binding Path=DataContext.IsAborted, RelativeSource={RelativeSource TemplatedParent}}" 
      Value="True"> 
      <Setter Property="Background" TargetName="BGBorder" Value="Red"> 
      </Setter> 
     </DataTrigger> 
     </DataTemplate.Triggers> 
    </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

Puede haber alternativas, pero una vez que tuve que trabajar, dejé de mirar :)

+0

Este funcionó muy bien para mí! – Kelly

+0

+1 para una solución XAML – Nebula

2

no he probado esto todavía, así que podría necesitar algunos ajustes pero vas a querer desencadenar el valor para establecer su color de fondo.

<DataTemplate.Triggers> 
    <Trigger Property="IsInternalNote" Value="True"> 
     <Setter Property="Background" Value="Red" /> 
    </Trigger> 
</DataTemplate.Triggers> 
Cuestiones relacionadas