2008-12-05 24 views
20

Tôi muốn đặt màu backgroun cho GridViewColumn là databound bên trong một listview trong WPF. Tôi không chắc làm thế nào để hỏi câu hỏi này là khá mới với WPF, nếu không tôi sẽ không làm phiền tất cả các bạn.Cách đặt màu nền dựa trên thuộc tính bool trong WPF

Tôi muốn thay đổi màu nền của toàn bộ hàng, dựa trên cờ bool trong đối tượng dữ liệu của tôi.

Trong trường hợp này, tôi có, một đối tượng "CaseDetail", khi có ghi chú nội bộ "IsInternalNote", tôi muốn màu của hàng thay đổi.

Làm cách nào để tôi có thể tắt tính năng này trong WPF?

Điều tôi hiện có, (rất đơn giản), KHÔNG thay đổi màu sắc.

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

Trả lời

30

Tôi chạy vào một vài rắc rối cố gắng để làm điều này, đã kết thúc như vậy

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

Có thể có lựa chọn thay thế, nhưng một khi tôi đã có nó làm việc, tôi dừng lại nhìn :)

+0

này làm việc tuyệt vời cho tôi !! – Kelly

+0

+1 cho tất cả giải pháp XAML – Nebula

2

Tôi chưa thử nghiệm điều này nhưng có thể cần một số chỉnh sửa nhưng bạn sẽ muốn kích hoạt giá trị để đặt màu nền.

<DataTemplate.Triggers> 
    <Trigger Property="IsInternalNote" Value="True"> 
     <Setter Property="Background" Value="Red" /> 
    </Trigger> 
</DataTemplate.Triggers> 
Các vấn đề liên quan