作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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
说:
Set property 'System.Windows.ResourceDictionary.DeferrableContent' threw an exception.
所以基本上,我不能在“客户端 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>
如下所示将其绑定(bind)到您的 DataGrid
<DataGrid ItemsSource="{Binding Source={StaticResource MyViewSource}}"
SelectedItem="{Binding MySelectedItem}"/>
希望这对您有所帮助!
关于c# - 如何在 XAML 中为自定义 DataGrid 控件指定 GroupDescriptions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35400045/
我是一名优秀的程序员,十分优秀!