我有一个
GroupingGrid
基本上是定制的控件
DataGrid
。我通过使ViewModel公开一个
ListCollectionView
,并有C#代码手动添加
PropertyGroupDescription
它告诉网格如何重新组合事物。
我想改为使用普通XAML,如下所示:
<controls:GroupingGrid GroupedItemSource="{DynamicResource MyViewSource}"
SelectedItem="{Binding MySelectedItem}"
ShowGroupingItemCount="True">
<DataGrid.Resources>
<CollectionViewSource x:Key="MyViewSource" Source="{Binding ViewModel.MyData}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="SomeProperty"
Converter="{StaticResource MyConverter}" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
</DataGrid.Resources>
<DataGrid.Columns>
<!-- column definitions -->
</DataGrid.Columns>
所以我把这个添加到我的
分组网格
控件的代码隐藏:
public static readonly DependencyProperty GroupedItemSourceProperty =
DependencyProperty.Register("GroupedItemSource", typeof (CollectionViewSource), typeof (GroupingGrid));
public CollectionViewSource GroupedItemSource
{
get { return (CollectionViewSource) GetValue(GroupedItemSourceProperty); }
set { SetValue(GroupedItemSourceProperty, value); }
}
它构建了,但我得到了一个运行时
XamlObjectWriterException
说:
设置属性“System.Windows.ResourceDictionary”。DeferrableContent“引发异常。
所以基本上,我不能使用
DataGrid.Resources
在“客户端xaml”中添加
CollectionViewSource.GroupDescriptions
收藏,因为我
无法重新初始化资源字典实例
.
我唯一的希望是用C#代码定义分组,还是有一种简洁的XAML方法?