【问题标题】:Silverlight 4 Checkbox column without underlying property in data source?数据源中没有基础属性的 Silverlight 4 复选框列?
【发布时间】:2011-05-17 13:37:16
【问题描述】:
我想知道是否可以与任何高级控件、GridView、ListView、Form View...进行交互,您可以在其中显示项目列表并在每个项目旁边有一个复选框,但没有在数据源中的该复选框后面有一个布尔属性?
更多关于你将如何阅读它?这意味着如果有一些项目的复选框被选中并且您保存了这些项目的列表,在编辑选择时,您将如何将其填充回控件中(意味着绑定所有项目,创建网格,无论它是什么......并且只有“检查”被选中的项目)?
/* 编辑 */
这代表以下场景:您在说事件和参与者之间存在一对多的关系。创建“参与者”记录时,您希望为尽可能多的事件注册它们...您希望显示所有事件,但能够一次选择其中一些。
/* 结束编辑 */
谢谢,
马丁
【问题讨论】:
标签:
silverlight
silverlight-4.0
binding
silverlight-toolkit
【解决方案1】:
我假设您的 DataSource 是一个模型(一个 DTO 或其他将数据从服务器传输到客户端的方式)。如果这是真的,您可以将模型包装在另一个具有 IsSelected 属性的对象中。然后,您可以绑定到扩展属性列表。我听说这被描述为面向方面的编程。当您从服务加载数据时,循环并创建扩展器,根据您的条件设置 IsSelected 并传入模型。然后将复选框绑定到 IsSelected 属性。
示例:
public class ModelExtender<T>
{
public T Model;
private bool isSelected = false;
public bool IsSelected
{
get { return this.isSelected; }
set
{
this.isSelected = value;
this.RaisePropertyChanged("IsSelected");
}
}
public ModelExtender(T model)
{
this.Model = model;
}