![](/img/trans.png)
[英]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.