WPF:CollectionViewSource按属性分组显示
在Xaml中,假设我有一个CollectionViewSource,其源设置为类型为Order的对象的可观察集合:WPF:CollectionViewSource按属性分组显示,wpf,data-binding,sorting,grouping,Wpf,Data Binding,Sorting,Grouping,在Xaml中,假设我有一个CollectionViewSource,其源设置为类型为Order的对象的可观察集合: public class Order { public int ContractID { get; set; } public double? Price { get; set; } public OrderSide Side { get;
public class Order
{
public int ContractID
{
get;
set;
}
public double? Price
{
get;
set;
}
public OrderSide Side
{
get;
set;
}
}
public enum OrderSide
{
BID,
ASK
}
投标订单是一个订单,其附带属性是投标,要求是要求。问题是我需要以当前格式显示订单
Grouped by ContractID
Bids (Descending) Asks (Ascending)
更具体地说,问题是我需要出价,并要求并排显示
例如,对于以下集合
var orders = new List<Order>()
{
new Order(){ContractID=1,Price=10,Side=OrderSide.BID},
new Order(){ContractID=1,Price=11,Side=OrderSide.ASK},
new Order(){ContractID=1,Price=9,Side=OrderSide.BID},
new Order(){ContractID=1,Price=11.5,Side=OrderSide.ASK},
new Order(){ContractID=2,Price=20,Side=OrderSide.BID},
new Order(){ContractID=2,Price=24,Side=OrderSide.ASK},
new Order(){ContractID=2,Price=21,Side=OrderSide.BID}
};
我猜我需要结合使用过滤的CollectionViewSource和datatemplateselectors
作为额外的奖励,我希望能够在分组行中显示最佳出价和最佳询问。因此,使用相同的数据,它将被渲染为
1 10 11
10 11
9 11.5
2 21 24
21 24
20
非常感谢的任何帮助-快速而肮脏-将您的订单包装在一个表示分组逻辑的类中
public class OrdersByContractId
{
public int ContractId {get;set;}
// set best bid and ask when this is updated
public ObservableCollection<Order> Orders {get;set;}
public Order BestBid {get;set;}
public Order BestAsk {get;set;}
}
公共类OrdersByContractId
{
公共int压缩{get;set;}
//设置最佳出价,并在更新时询问
公共可观察收集顺序{get;set;}
公共秩序最佳出价{get;set;}
公共秩序最佳任务{get;set;}
}
然后,您可以查询存储库,生成订单并对其进行分组,确定最佳出价和请求,并填写订单合同(这可以使用Linq to Sql来完成,但这个答案有点复杂)。然后,您所要做的就是绑定到这些对象的集合,您就完成了。谢谢您的帮助,这样就可以了。我想我希望使底层数据源尽可能简单(ObservableCollection),并让一些数据绑定向导代替过程代码。
public class OrdersByContractId
{
public int ContractId {get;set;}
// set best bid and ask when this is updated
public ObservableCollection<Order> Orders {get;set;}
public Order BestBid {get;set;}
public Order BestAsk {get;set;}
}