0

我正在使用一个 ItemsControl,它填充了一个包含几种不同数据类型的集合。每种数据类型都有自己的DataTemplate,而且都显示正确,但是我的问题是:当有多个相同类型一个接一个显示时,第一个必须在它上面显示一个标题,最后一个必须显示它下面的一条水平线。有没有办法在 XAML 中检测到这一点,还是我需要稍微预处理这个列表来设置标志?

数据如下:

Patient
Test
Result <-- header before this
Result
Result <-- line after this
Test
Result <-- header before, line after
Patient
Comment <-- header before this
Comment
Comment <-- line after this
Test
Result <-- header before, line after

我不想在显示之前对数据类型进行分组,它们需要按照它们到达的顺序显示。

4

2 回答 2

0

我认为您会受益于将您的 ItemsControl 绑定到某处定义的 CollectionViewSource 的资源键。您也许可以使用CollectionViewSource.GroupDescriptions[1] 在 UI 中显示它。

查看ItemsControl.GroupStyle[2] 以了解如何设置此样式。

[1] http://msdn.microsoft.com/en-us/library/system.windows.data.collectionviewsource.groupdescriptions.aspx

[2] http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.groupstyle.aspx

于 2013-01-15T16:00:43.967 回答
0

您需要向每个项目的下一个/上一个兄弟询问其类型,并将其与当前项目的类型进行比较,并考虑到如果两者都相等且等于该项目,则您什么也不做......绝对不能这样做纯xml。

对我来说最简单的方法是在项目的视图模型中实现两个 bool 属性'HeaderVisible''BottonLineVisible'在那里处理逻辑。在 DataTemplate 中将触发器绑定到它们以根据需要添加顶部/底部行。

于 2013-01-15T16:30:12.973 回答