我正在研究绑定到ObservableCollection属性的概念证明,该属性返回委托的结果。委托还为其设置了一个属性,以便我可以更改使用的表达式,并为集合触发OnPropertyChanged。这允许我将ComboBox绑定到Collection,并且在更改表达式/查询时,ComboBox中的可用选项也将更改。收藏/收藏查看基于Silverlight中的Linq查询
代码:
public delegate List<string> Del();
private Del _query;
public Del Query
{
get
{
return _query;
}
set
{
_query= value;
OnPropertyChanged("BindList");
}
}
private ObservableCollection<string> bindList;
public ObservableCollection<string> BindList
{
get
{
var results = Query();
bindList = new ObservableCollection<string>(results);
return bindList;
}
set
{//I believe I need this setter for the extra functionality provided by ObservableCollections over Lists
if(bindList != value) {
bindList = value;
OnPropertyChanged("BindList");
}
}
}
由于这个工程,我想使一类出来的,这将是简单结合。我正在寻求如何这样做的指导。我想过一些关于子类化ObservableCollection,但是如何设置Items的问题。我还考虑过使用像IEnumerable和ICollectionView这样的接口(以及通知接口)的自定义类。
总而言之,您将如何构建一个类来合并一个集合,该集合的成员基于委托查询(关于子类/接口的具体LINQ)?
在此先感谢。
'ICollectionView'看起来像是答案的一部分。它具有SourceCollection的只读属性,我认为应该只在我的类中引用一个私有列表?除非我也从一些集合类继承,当我尝试绑定到我的类不需要绑定到'myCollection.SourceCollection'或绑定到'myCollection'就足够了(myCollection是我的自定义类的类型)。我宁愿不必做点语法,因为我会有很多这些,它会变得混乱。 – Ethan 2012-08-16 14:41:57