我已将分组添加到ItemsControl:
<ItemsControl Style="{StaticResource SellingDashboardToDosList}" Grid.Row="2" BorderThickness="1" Background="#C7E8F8" HorizontalAlignment="Stretch" ItemsSource="{Binding ToDoList}" >
<ItemsControl.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="GroupItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="GroupItem">
<GroupBox Header="{Binding Name}">
<ItemsPresenter />
</GroupBox>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ItemsControl.GroupStyle>
</ItemsControl>
现在我只看到空的GroupBox。我使用Snoop工具来探索应用程序,我发现GroupBox ItemPresenters是空的!可能是什么原因呢?
如果我从ItemsControl(ItemsControl.GroupStyle元素)中删除分组,那么一切正常,我再次看到所有项目。我不需要对基础数据上下文进行任何更改即可查看所有项目。数据上下文(ItemsSource binging)的类型为 CollectionViewSource 。
绑定跟踪已打开,但我没有看到任何绑定错误。
答案 0 :(得分:1)
看起来ItemsControl样式覆盖了ItemsControl.Template属性。一旦这种风格被覆盖,问题就解决了。
答案 1 :(得分:0)
您必须先对数据进行分组。使用CollectionViewSource来做到这一点:
<CollectionViewSource x:Key="Data" Source="{StaticResource SellingDashboardToDosList}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="PropertyNameToGroupBy"/>
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
只有这样你才能做到以下几点:
<ItemsControl ItemsSource="{Biding Source={StaticResource Data}}" ...