【发布时间】:2016-07-27 02:41:30
【问题描述】:
我想根据数据值改变 ListView 的一项颜色。 这样做很容易:
<ListView.ItemContainerStyle>
<Style TargetType = "ListViewItem" >
< Setter Property="Background" Value="{Binding EventType, Converter={StaticResource EventTypeToBackColorConverter}}" />
</ListView.ItemContainerStyle>
但问题是 UWP 不支持在 Setter Properties 中进行绑定。 我的第二次尝试是覆盖 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);
}
}
以上代码在装有 Windows 10 和 UWP 的 PC 上运行良好。它根据基础数据将某些项目涂成红色。当我在 Windows Mobile 中运行相同的应用程序时,一开始它运行良好,但是当我向上滚动然后向下滚动时,返回到开始时可以正常显示的原始视图,现在其他项目也为红色。
我错过了什么?
【问题讨论】:
标签: xaml windows-10 uwp