我已经定义了ItemsControl:
<ItemsControl Style="{StaticResource SellingDashboardToDosList}" Grid.Row="2" 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是ViewModel中的SynchronisedObservableCollection。但是这个XAML不会产生任何分组。我假设我应该以某种方式指定ItemsSource是可分组的。但是我应该在哪里指定它?
如果我将XmlDataProvider与一些静态数据一起使用,那么我可以在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); target元素是'CollectionViewSource'(HashCode = 51380674); target属性为'Source'(类型'Object')
答案 0 :(得分:1)
但后来我得到了一个运行时绑定错误,即ItemsSource的类型无效。
您是否正确引用了它?您需要将其指定为Binding.Source
:
ItemsSource="{Binding Source={StaticResource CollectionViewSource1}}"
答案 1 :(得分:0)
我在C#中使用了ListCollectionView而不是XAML中的CollectionViewSource。