我想根據數據值更改ListView項目的顏色。 這將是很容易做的:PrepareContainerForItemOverride在桌面工作方式與移動UWP不同
<ListView.ItemContainerStyle>
<Style TargetType = "ListViewItem" >
< Setter Property="Background" Value="{Binding EventType, Converter={StaticResource EventTypeToBackColorConverter}}" />
</ListView.ItemContainerStyle>
但問題是,UWP不支持setter屬性綁定。 我的第二次嘗試重寫的ListView PrepareContainerForItemOverride:
public class EventListView : ListView
{
protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
{
base.PrepareContainerForItemOverride(element, item);
var listViewItem = element as ListViewItem;
var ev = item as EventType;
if(ev.Warning)
listViewItem.Background = new SolidColorBrush(Color.Red);
}
}
上面的代碼工作正常運行在PC與Windows 10和UWP。它根據基礎數據以紅色着色一些項目。當我在Windows Mobile中運行相同的應用程序時,在開始時它工作正常,但是當我向上滾動,然後向下滾動時,返回到原始視圖,在開始時可以,現在其他項目也是紅色。
我缺少什麼?
謝謝你的答覆。事情是,每個項目可以有不同的顏色,所以ListView.Background不會是一個解決方案。第二個選項,使用DataTemplate,對我來說不起作用,因爲顏色不會填滿整個矩形,就像選區一樣。有餘量。 – kokokok