ListViewItem覆盖默认样式中断gridviews
我想知道是否有人遇到过这种情况。 基本上我要做的是覆盖默认的listviewitem来自定义所选的背景/前景。 我的工作一切都很好,花花公子。 问题是,我注意到在我已经实现了网格视图的列表视图中,列被破坏了。 我不确定是什么打破这个。 我的覆盖默认样式的方法是使用blend来通过编辑模板副本来获得完整样式。 根据需要修改它。 应用它。 这几乎就是它的样子。 有什么想法吗?
我在两种情况下都检查了ListViews
的控件模板,并得出结论,样式不适用于GridViews
因为它们需要GridViewRowPresenter
来正确布局行数据,而不是ContentPresenter
。
当然,如果你这样做,你会发现你的普通ListViews
不使用GridViews
不再正确格式化,因为它们需要ContentPresenter
。
我并不完全确定最好的方法,但偶然发现了这篇博文: http : //www.steelyeyedview.com/2010/03/contentpresenter-gridviewrowpresenter.html
我将在这里重复的要点,以防它被删除:
他的解决方案是一个整洁的小黑客,似乎工作。 它使用两个演示者,默认情况下隐藏了ContentPresenter
( Visibility="Collapsed"
),并且如果GridViewRowPresenter
没有内容,则使用触发器使ContentPresenter
可见。 由于GridViewRowPresenter
没有内容,因此无论如何都不会显示任何内容。
调整你的Style
以包括他的修复,你会有这样的东西(一些代码被移除焦点):