1

我是这样定义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>

ItemsSourceSynchronisedObservableCollection<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);目标属性是“源”(类型“对象”);

4

2 回答 2

1

但随后我收到一个运行时绑定错误,即 ItemsSource 的类型无效。

你引用正确了吗?您需要将其指定为Binding.Source

ItemsSource="{Binding Source={StaticResource CollectionViewSource1}}"
于 2012-07-13T17:32:01.780 回答
0

我在 C# 中使用 ListCollectionView 而不是 XAML 中的 CollectionViewSource。

于 2012-07-16T09:28:21.340 回答