2008-12-05 4 views
20

Я хочу установить цвет backgroun для GridViewColumn, который является базой данных внутри списка в WPF. Я не уверен, как задать этот вопрос, который был довольно новым для WPF, иначе я бы не стал беспокоить всех вас.Как установить цвет фона на основе свойства bool в WPF

Я хочу изменить цвет фона всей строки на основе флага bool в моем объекте привязки данных.

В этом случае у меня есть объект «CaseDetail», который, когда есть внутренние заметки «IsInternalNote», я хочу изменить цвет строки.

Как это сделать в WPF?

То, что у меня есть сейчас (очень простое), которое НЕ меняет цвет.

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

ответ

30

я столкнулся с несколькими проблемами, пытаясь сделать это, в конечном итоге, как так

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

Там могут быть альтернативы, но как только я имел это работает, я перестал смотреть :)

+0

Эта отлично поработал для меня !! – Kelly 2009-06-17 20:15:58

2

Я не проверял это еще не так, возможно, потребуется несколько щипков, но вы будете хотеть, чтобы провоцировать значение, чтобы установить цвет фона.

<DataTemplate.Triggers> 
    <Trigger Property="IsInternalNote" Value="True"> 
     <Setter Property="Background" Value="Red" /> 
    </Trigger> 
</DataTemplate.Triggers> 
Смежные вопросы