我处于一个奇怪的情况。我正在生成按特定类别分组的项目列表。在我的视图模型中,我将项存储在ReadOnlyDictionary<string, List<CustomObject>>
的实例中,其中CustomObject
表示我创建的用于存储每个列表项的类。该字符串是类别。在我看来,我有一个StackPanel
其中<ItemsControl>
。该项目的控制有一个ItemTemplate
这看起来有点像这样:Wpf数据模板 - 如何访问ItemsControl中项目的父项?
<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永远不会被访问。我想即使是这样,它也无法知道哪个项目正在调用它。
所以。我该怎么办?
您可以将DataTrigger添加到分隔符样式,如果选择了第一个项目,它将折叠分隔符。 –