我实现了一个内部有DataGrid
的UserControl和一些控件来启用对DataGrid
各项的分页。一切都按我预期的那样工作正常。我可以浏览页面,并通过字符串过滤项目。我可以跳到某个页面。还有更多。
现在,我想支持项目的分组:
因此,我使用以下代码:
OriginalItemsSourceView.GroupDescriptions.Add(new PropertyGroupDescription("Lastname"));
姓氏是Model的属性,该属性作为OriginalItemsSource绑定到我的PagedDataGrid。
这很好用。我的PagedDataGrid中的项目按模型的姓氏分组。
现在,我想像this文章中那样对分组进行可视化。
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<StackPanel>
<TextBlock Text="{Binding Name}"/>
<ItemsPresenter/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</DataGrid.GroupStyle>
不幸的是,这不起作用。在VisualStudio的输出中,我可以多次看到以下绑定错误:
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.DataGrid', AncestorLevel='1''. BindingExpression:Path=AreRowDetailsFrozen; DataItem=null; target element is 'DataGridDetailsPresenter' (Name=''); target property is 'SelectiveScrollingOrientation' (type 'SelectiveScrollingOrientation')
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.DataGrid', AncestorLevel='1''. BindingExpression:Path=HeadersVisibility; DataItem=null; target element is 'DataGridRowHeader' (Name=''); target property is 'Visibility' (type 'Visibility')
我不明白为什么这对我不起作用。我已经在另一个项目中做了同样的事情。