Windows phone 如何在Windows/Phone 8.1 ListView中设置组背景的样式?

Windows phone 如何在Windows/Phone 8.1 ListView中设置组背景的样式?,windows-phone,windows-store-apps,winrt-xaml,windows-phone-8.1,win-universal-app,Windows Phone,Windows Store Apps,Winrt Xaml,Windows Phone 8.1,Win Universal App,我有一个绑定到分组数据的ListView。我希望能够根据项目的内容绑定每个组的背景。GroupStyle.ContainerStyle在8.1中被弃用,但没有更改ListView的ItemsPanel。不幸的是,这带来了性能上的冲击 是否有一种方法可以在不更改ListView的ItemsPanel的情况下为整个组定义背景 不幸的是,我无法同时更改项目和标题的模板(尽管我已经尝试过),因为有些项目是重复的,并且不知道它们在哪个组中 有两种不同的方法来解决此问题: 将responsible属性添加

我有一个绑定到分组数据的ListView。我希望能够根据项目的内容绑定每个组的背景。GroupStyle.ContainerStyle在8.1中被弃用,但没有更改ListView的ItemsPanel。不幸的是,这带来了性能上的冲击

是否有一种方法可以在不更改ListView的ItemsPanel的情况下为整个组定义背景


不幸的是,我无法同时更改项目和标题的模板(尽管我已经尝试过),因为有些项目是重复的,并且不知道它们在哪个组中

有两种不同的方法来解决此问题:

  • 将responsible属性添加到ItemTemplate中,并使用转换器将其连接,转换器将其转换为所需的类型(在您的示例中为BackgroundColor)。问题是,正如已经提到的,这是非常昂贵的,在我看来,转换器不是为这样一个巨大的操作。不要忘记,在MVVM中,视图模型应该提供设计视图的人所需的所有信息
  • 更好的方法是添加一个名为“ItemBackground”的属性,并将其绑定到ItemTemplate。我更喜欢这种方法,因为视图中没有使用哪个背景的逻辑

您是否可以使用转换器来检测哪一组是特定项目?不幸的是,我认为这相当困难,或者至少非常昂贵。我必须将它放在item容器中,然后让转换器向上解析可视化树,直到它找到
ItemsControl
的源。它必须对每一项都这样做,这(我相信)消除了使用新的
ItemsPanel
的好处,所以我还是使用旧的。这是我考虑过的一个想法。你可以使用GroupStyleSelector来满足你的需要。这会有什么帮助呢?每个GroupStyle似乎只能定义一个标题模板。我认为在实体vm中拥有
BackgroundBrush
属性(比转换器更好)是这里唯一的选择。我怀疑这会有任何代价,因为
列表视图
只会呈现视图中的内容。但问题是绘制整个组的背景。我可以解决获取控件所需信息的问题。