我有一個 ListView,它會定期更新并顯示一些分析資料。
每行代表一個不同的來源,列顯示它的分析值。
我想要的是僅在滿足特定條件時更改單個單元格的背景顏色或字體顏色。
例如,如果“價格”列的值小于 X,它將變為紅色背景或字體。
但我不希望整行都改變顏色,而只改變那一行的“價格”列。
我知道如何改變整行的顏色,這里也有很多例子,例如使用系結。但我想知道是否有辦法只更改單個單元格的背景顏色或字體顏色。
謝謝。
編輯:
感謝 Sean Manton 的回復,我很容易解決了這個問題。令人驚訝的是,在我的搜索中找到任何結果時遇到了這么多問題,所以我也用一個作業示例添加了我自己的答案。
uj5u.com熱心網友回復:
GridViewColumn有一個CellTemplate可以指向DataTemplate單元格的屬性。在DataTemplate您可以使用系結轉換器將值映射到所需的樣式。
uj5u.com熱心網友回復:
在搜索 CellTemplate 用法后,我很容易解決了這個問題,感謝 Sean Manton 的回復。
不知道為什么當我搜索更改 ListView 列或單元格的顏色時我很難找到它,結果只顯示“行”而不是“列”。
此外,這里的大多數答案總是使用系結轉換器,這似乎是更好的方法,但我注意到即使沒有任何轉換器并且使用非常簡單的代碼也可以作業。
所以我會在這里寫這個例子,以防有人覺得它有用:
XAML 設計:
<ListView x:name="myListView">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding ID}" Header="ID" />
<GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name" />
<GridViewColumn Header="Price">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Price}" Foreground="{Binding Price_Color}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
至于 C# 代碼,我們只需要創建一個包含“Price_Color”字串值的串列。
public class myListViewItem
{
public int ID { get; set; }
public string Name { get; set; }
public double Price { get; set; }
public string Price_Color { get; set; }
}
現在我們可以很容易地添加和自定義我們想要的顏色的專案,如下所示:
List<myListViewItem> myItemList = new List<myListViewItem>();
myItemList.Add(new myListViewItem { ID = 1, Name = "Book", Price = 15.7, Price_Color = "Green" });
myItemList.Add(new myListViewItem { ID = 2, Name = "Laptop", Price = 4000, Price_Color = "Red" });
myItemList.Add(new myListViewItem { ID = 2, Name = "Mobile", Price = 3000, Price_Color = "#FFF2CC" });
MyListView.ItemsSource = myItemList;
現在我們將在 ListView 中有 3 行,每行只有“價格”列的字體顏色不同。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/434112.html
