[英]How can I change the Background color of a GridViewColumn dynamically?
總的來說,我有以下幾點:
List<Person> items = new List<Person>();
Person p = new Person() { NameP = "Samantha", Gen = true, Feb = true, Mar = false, Apr = false, Mag = false, Lug = false, Ago = false, Set = false, Ott = false, Nov = false, Dic = false };
items.Add(new Person() { NameP = "Jack", Gen = true, Feb = true, Mar = true, Apr = true, Mag = false, Lug = false, Ago = false, Set = false, Ott = false, Nov = false, Dic = false });
listView.ItemsSource = items;
其中Person是由字符串NameP和12個布爾值組成的類,每個月一個。
我設法在ListView的GridView內部看到它們。 結果如下:
現在,我必須將所有為“ true”的項目的背景顏色更改為黃色,我也不知道。 這是xaml代碼:
<ListView x:Name="listView" Height="144">
<ListView.View>
<GridView>
<GridViewColumn Width ="150" Header="NAMEP" DisplayMemberBinding="{Binding NameP}"/>
<GridViewColumn Width ="50" Header="GEN" DisplayMemberBinding="{Binding Gen}"/>
<GridViewColumn Width ="50" Header="FEB" DisplayMemberBinding="{Binding Feb}"/>
<GridViewColumn Width ="50" Header="MAR" DisplayMemberBinding="{Binding Mar}"/>
<GridViewColumn Width ="50" Header="APR" DisplayMemberBinding="{Binding Apr}"/>
<GridViewColumn Width ="50" Header="MAG" DisplayMemberBinding="{Binding Mag}"/>
<GridViewColumn Width ="50" Header="GIU" DisplayMemberBinding="{Binding Giu}"/>
<GridViewColumn Width ="50" Header="LUG" DisplayMemberBinding="{Binding Lug}"/>
<GridViewColumn Width ="50" Header="AGO" DisplayMemberBinding="{Binding Ago}"/>
<GridViewColumn Width ="50" Header="SET" DisplayMemberBinding="{Binding Set}"/>
<GridViewColumn Width ="50" Header="OTT" DisplayMemberBinding="{Binding Ott}"/>
<GridViewColumn Width ="50" Header="NOV" DisplayMemberBinding="{Binding Nov}"/>
<GridViewColumn Width ="50" Header="DIC" DisplayMemberBinding="{Binding Dic}"/>
</GridView>
</ListView.View>
</ListView>
感謝您的建議。
可能是重復的...:不,我需要動態更改顏色,而不是按照提示我重復的問題中要求的靜態方式進行更改
您可以使用轉換器將布爾值轉換為正確的背景
<GridViewColumn Width ="50" Header="GEN" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Gen}" Background="{Binding Gen, Converter={StaticResource BackgroundConverter}}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
轉換器看起來像這樣
class BackgroundConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null && value is bool && (bool)value)
{
return Application.Current.FindResource("ActiveBrush");
}
return Application.Current.FindResource("DefaultBrush");
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
App.Resources中的畫筆
<SolidColorBrush x:Key="DefaultBrush" Color="Red" />
<SolidColorBrush x:Key="ActiveBrush" Color="Yellow" />
您可以為列表視圖編寫樣式
編寫突出顯示ListViewItems的樣式
<Style TargetType="TextBlock" BasedOn="{StaticResource {x:Type TextBlock}}">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}" Value="True">
<Setter Property="Background" Value="Yellow" />
</DataTrigger>
</Style.Triggers>
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}"/>
</Style>
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn Header="ID" DisplayMemberBinding="{Binding Id}" Width="50"/>
<GridViewColumn Header="Date" DisplayMemberBinding="{Binding ItemID}" Width="auto" />
<GridViewColumn Header="ShipCity" DisplayMemberBinding="{Binding ItemSerialNumber}" Width="auto"/>
</GridView>
</ListView.View>
</ListView>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.