我有一個GroupingGrid
控制,這基本上是一個自定義DataGrid
。我通過使代碼隱藏工作,讓我的ViewModel公開了一個ListCollectionView
,並讓C#代碼手動添加PropertyGroupDescription
,告訴網格如何重組事情。如何在XAML中爲自定義DataGrid控件指定GroupDescriptions?
我想要做的是,在純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
說:
Set property'System.Windows.ResourceDicti onary.DeferrableContent'引發了一個異常。
所以基本上,我不能使用DataGrid.Resources
在「客戶端XAML」添加東西像CollectionViewSource.GroupDescriptions
收藏,因爲我不能重新初始化資源字典實例。
是我唯一希望在C#代碼中定義分組,還是有一種整潔的XAML方式?