2008-12-05 2 views
20

Ich möchte die Hintergrundfarbe für eine GridViewColumn festlegen, die innerhalb einer ListView in WPF datengebunden ist. Ich bin mir nicht sicher, wie ich diese Frage stellen könnte, weil sie für WPF ziemlich neu ist, sonst hätte ich Sie nicht alle belästigt.Festlegen der Hintergrundfarbe basierend auf Bool-Eigenschaft in WPF

Ich möchte die Hintergrundfarbe der ganzen Reihe, basierend auf einem Bool-Flag in meinem datengebundenen Objekt ändern.

In diesem Fall habe ich, naja, ein "CaseDetail" -Objekt, dass, wenn es interne Notizen "IsInternalNote" gibt, möchte ich die Farbe der Zeile ändern.

Wie kann ich das in WPF abziehen?

Was ich jetzt habe (sehr einfach), die die Farbe NICHT ändert.

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

Antwort

30

ich in ein paar Probleme lief, dies zu tun versuchen, endete wie so hoch

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

kann es Alternativen, aber sobald ich es hatte funktioniert, hörte ich auf der Suche :)

+0

Diese hat super für mich gearbeitet !! – Kelly

+0

+1 für eine gesamte XAML-Lösung – Nebula

2

Ich habe dies noch nicht getestet, so dass es einige Optimierungen benötigen könnte aber Sie werden den Wert auslösen wollen, um Ihre Hintergrundfarbe zu setzen.

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