突然搞不懂貌似应该很简单的CollectionViewSource的Grouping问题了

wpf3d 2015-10-15 12:54:22
目的:Northwind数据库的Product表按CategoryName(或CategoryId)分组显示。

数据库就这么简单了:


//NorthwindDomainService.metadata
internal sealed class ProductMetadata
{
...
[Include]
public Category Category { get; set; }
...

//NorthwindDomainService.cs
public IQueryable<Product> GetProducts()
{
return this.ObjectContext.Products.Include("Category") ;
}

这些都做了。



//HomeViewModel.cs
public class HomeViewModel
{
public IEnumerable<Product> Products { get; set; }
public HomeViewModel()
{
var context = new NorthwindDomainContext();
Products = context.Products;
if (!DesignerProperties.IsInDesignTool)
context.Load(context.GetProductsQuery());
}
}


Home.xaml
xmlns:vm="clr-namespace:GroupingTest002.ViewModels"
...
<navigation:Page.Resources>
<CollectionViewSource x:Key="ProductsCV" Source="{Binding Products}">

</CollectionViewSource>
</navigation:Page.Resources>
<navigation:Page.Style>
<StaticResource ResourceKey="PageStyle"/>
</navigation:Page.Style>
<navigation:Page.DataContext>
<vm:HomeViewModel />
</navigation:Page.DataContext>

...
<sdk:DataGrid Height="300" ItemsSource="{Binding Source={StaticResource ProductsCV}}" AutoGenerateColumns="False">
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Header="Product Id" SortMemberPath="ProductID" Binding="{Binding ProductID}" />
<sdk:DataGridTextColumn Header="Product Name" SortMemberPath="ProductName" Binding="{Binding ProductName}" />
<sdk:DataGridTextColumn Header="Cateogry" SortMemberPath="CategoryId" Binding="{Binding Category.CategoryName}" />
</sdk:DataGrid.Columns>
</sdk:DataGrid>

目前为止显示没问题。

但是,想用CategoryId分组没效果, PropertyName设成Category, Category.CategoryName等等都不行。但用Product表的ReorderLevel, Discontinued等是可以分组的。
<CollectionViewSource x:Key="ProductsCV" Source="{Binding Products}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="CategoryId" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>

难道不能用外键字段进行分组吗?
...全文
445 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Architecture Net 2016-05-31
  • 打赏
  • 举报
回复
相信你已经解决了吧。
wpf3d 2015-10-15
  • 打赏
  • 举报
回复
郁闷,折腾半天原来是我习惯写成CategoryId,而字段名应该是CatagoryID,一个字母引发的臭案! 现在问题改成怎样把分组名自定义成CategoryName:(记录个数)吧。而不是默认的CategoryID:(记录个数)。怎么做呢?

8,756

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧