【发布时间】:2015-08-15 17:09:53
【问题描述】:
我有一个场景,我想在后面的代码中创建一个 Binding 对象,然后将它连接到 datagrid 列。像这样的:
int i = 5; // Will get this value from some other object
Binding b = new Binding("Customers.where(c => c.CustomerId == " + i + ").ToList()[0].OrderValue"); // how to make this work ?
telerikGridView.Columns.Add(
new Telerik.Windows.Controls.GridViewDataColumn
{
Header = "Customer",
DataMemberBinding = b
}
);
我看到另一个post 建议我可以使用转换器或者我应该创建一个自定义绑定类。但转换器也不工作。
我在这里错过了一些非常琐碎的事情吗?
【问题讨论】:
-
创建一个具有可观察集合的属性,该集合将包含 "Customers.where(c => c.CustomerId == " + i + ").ToList()[0].OrderValue");然后将其绑定到拥有此属性的视图模型。将 MVVM 用于 WPF 而不是代码隐藏
-
好吧,我实际上做不到。这是要求的一部分,我可以将任意数量的客户添加到这里的 DataContext 类中。
-
我不明白你为什么不能。如果您想在类之间共享数据,请给它们一个通用接口。
-
所以这个客户的集合实际上包含了我可能会继续添加到类中的客户(即 datacontext),而我可以添加的客户数量是未定义的
-
好的,所以通知/更新类关于添加的不同数量的元素。看看这里en.wikipedia.org/wiki/Observer_pattern