我的情况很奇怪。我正在生成按特定类别分组的项目列表。在我的视图模型中,我将项目存储在 的实例中ReadOnlyDictionary<string, List<CustomObject>>
,其中CustomObject
表示我为存储每个列表项而创建的类。字符串是类别。在我看来,我有一个StackPanel
在<ItemsControl>
里面。项目控件ItemTemplate
的外观如下所示:
<DataTemplate x:Key="DataTemplateName">
<StackPanel>
<Separator />
<TextBlock Text="{Binding Key}" />
<ItemsControl ItemsSource="{Binding Value}" />
</StackPanel>
</DataTemplate>
上面的绑定效果很好。问题是我不希望在第一项上方有分隔符。所以我想我需要一个不同的风格为第一个项目。
我试过使用ItemTemplateSelector
,但问题是它只能访问当前项目,所以它无法知道它是否在第一个元素上。我也尝试过做类似的事情
<Separator
Visibility={Binding ShowSeparator, RelativeSource={RelativeSource AncestorType={x:Type CustomObject}}}" />
...其中 ShowCategories 是 CustomObject 类中的一个依赖属性,它查看 ReadOnlyDictionary 实例并说明是否显示分隔符。但是当我这样做时,永远不会访问 ShowCategories。我想即使是这样,它也无法知道是哪个项目在调用它。
所以。我该怎么办?