[英]DataGrid virtualization bound to ListCollectionView with GroupDescriptions
[英]How to specify GroupDescriptions in XAML for a custom DataGrid control?
我有一个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>
所以我把它添加到我的GroupingGrid
控件的代码隐藏中:
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'引发了异常。
所以基本上,我不能在“client xaml”中使用DataGrid.Resources
来添加像CollectionViewSource.GroupDescriptions
集合这样的东西,因为我无法重新初始化资源字典实例 。
我唯一希望用C#代码定义分组,还是有一个简洁的XAML方式?
添加CollectionViewSource
作为Window/Usercontrol
资源
<Window.Resources>
<CollectionViewSource x:Key="MyViewSource" Source="{Binding ViewModel.MyData}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="SomeProperty"
Converter="{StaticResource MyConverter}" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
</Window.Resources>
将它绑定到DataGrid
,如下所示
<DataGrid ItemsSource="{Binding Source={StaticResource MyViewSource}}"
SelectedItem="{Binding MySelectedItem}"/>
希望这可以帮助!!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.