问题
I want to set the backgroun color for a GridViewColumn that is databound inside of a listview in WPF. I'm not sure how to ask this question being fairly new to WPF, otherwise I wouldn't have bothered all of you.
I want to change the background color of the whole row, based on a bool flag in my databound object.
In this case, I have, well, a "CaseDetail" object, that when there are internal notes "IsInternalNote" I want the color of the row to change.
How can I pull this off in WPF?
What I have now, ( very simple ), which does NOT change the 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>
回答1:
I ran into a few troubles trying to do this, ended up like so
<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>
There may be alternatives, but once I had it working, I stopped looking :)
回答2:
I haven't tested this yet so it might need some tweaks but you're going to want to trigger off the value to set your background color.
<DataTemplate.Triggers>
<Trigger Property="IsInternalNote" Value="True">
<Setter Property="Background" Value="Red" />
</Trigger>
</DataTemplate.Triggers>
来源:https://stackoverflow.com/questions/345198/how-to-set-background-color-based-on-bool-property-in-wpf