2008-12-05 5 views
20

Je souhaite définir la couleur d'arrière-plan pour un objet GridViewColumn qui est databound à l'intérieur d'une liste dans WPF. Je ne suis pas sûr de savoir comment poser cette question relativement nouvelle à WPF, sinon je ne vous aurais pas dérangé tous. Je veux changer la couleur d'arrière-plan de la rangée entière, basée sur un drapeau de bool dans mon objet databound.Comment définir la couleur d'arrière-plan basée sur la propriété bool dans WPF

Dans ce cas, j'ai bien un objet "CaseDetail", qui quand il y a des notes internes "IsInternalNote" je veux changer la couleur de la rangée.

Comment puis-je retirer ceci dans WPF?

Ce que j'ai maintenant, (très simple), qui ne change pas la couleur.

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

Répondre

30

je suis tombé sur quelques problèmes en essayant de le faire, a fini comme si

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

Il peut y avoir des solutions de rechange, mais une fois que je l'avais travailler, je me suis arrêté à la recherche :)

+0

Cette travaillé très bien pour moi !! – Kelly

+0

+1 pour une solution tout en XAML – Nebula

2

Je n'ai pas testé mais il pourrait avoir besoin de quelques réglages mais vous allez vouloir déclencher la valeur pour définir la couleur d'arrière-plan.

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