我是这样定义ItemsControl
的:
<ItemsControl Grid.Row="2" Style="{StaticResource SellingDashboardToDosList}"
BorderThickness="1" Background="#C7E8F8" HorizontalAlignment="Stretch"
ItemsSource="{Binding Path=ToDoList}">
<ItemsControl.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="GroupItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="GroupItem">
<GroupBox Header="{Binding Path=Model.TodoType}" >
<ItemsPresenter />
</GroupBox>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ItemsControl.GroupStyle>
</ItemsControl>
ItemsSource
是SynchronisedObservableCollection<T>
中的一个ViewModel
。但是这个 XAML 不会产生任何分组。我假设我应该以某种方式指定ItemsSource
可分组的。但是我应该在哪里指定呢?
如果我将 anXmlDataProvider
与一些静态数据一起使用,那么我可以CollectionViewSource
在以下示例中的元素中执行此操作:http: //cromwellhaus.com/2010/03/grouping-is-crazy-easy-in-wpf/(已存档) .
我试过这样做:
<CollectionViewSource x:Key="CollectionViewSource1" Source="{Binding Path=ToDoList}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="TodoType"/>
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
但后来我得到一个运行时绑定错误:
BindingExpression 产生的值对目标属性无效。Value='System.Windows.Data.ListCollectionView' BindingExpression:Path=ToDoList; DataItem='ToDosViewModel' (HashCode=40956219); 目标元素是“CollectionViewSource”(HashCode=51380674);目标属性是“源”(类型“对象”);