【问题标题】:Binding to custom properties绑定到自定义属性
【发布时间】:2012-06-21 15:46:12
【问题描述】:

几个小时前,我发布了一个问题 (http://stackoverflow.com/questions/11134264/c-sharp-add-properties-at-runtime)。我询问了如何使用新属性扩展现有类。而且,没关系。我设法添加了新的属性,但现在我需要根据动态添加的属性将 GroupDescription 添加到 PagedCollectionView。这意味着我有课

MyClass
{
    string _name;
    string _phone;
}

现在,我想动态地添加具有生成值的新属性(JobTitle、Position),并为 JobTitle 和 Position 定义 GroupDescriptions。 通过上述实现,我有

Dictionary<string, string> Attributes;

但是,如果我说

collection.AddGroupDescription(key);

它将根据 Key - JobTitle 对数据进行分组,而不是按值。

谢谢, 约克西莫维奇

【问题讨论】:

  • 你为什么不使用可观察的集合而不是字典?
  • 有什么区别?我可能还会有键值对?
  • 我说的是因为如果您将职位和职位合并到 MyClass 对象中,您可以拥有 collection.AddGroupDescription(jobtitle) 并且它会按预期分组。
  • 对不起,我没听懂。这就是我想做的,但我不明白你的建议......

标签: silverlight pagedcollectionview


【解决方案1】:

所以实现这一点的标准方法如下

MyClass
{
    string _name;
    string _phone;
    string _jobTitle;
    string _position;
}


private ObservableCollection<MyClass> collection = //fetch from web service or something
PagedCollectionView pcv = new PagedCollectionView(collection);
pcv.GroupDescriptions.Add(new PropertyGroupDescription("JobTitle"));
DataGrid.ItemsSource = pcv;

【讨论】:

  • 我现在看到了......但是,问题是应该动态添加 _jobTitle 和/或 _position。它们不在类中,应在实例化类期间添加。之后,一切都应该像你描述的那样。
  • DataGrids 不支持绑定到多个源。我认为您最好的选择是在实例化时动态填充类的 2 个属性。这可以在可观察的集合项上使用 foreach 循环执行,并且显示将自动更新。
  • 好的,我现在会这样做,但我认为必须有不同的解决方案:) 关键是,我在课堂上没有这些属性,我想在课堂上添加它们初始化...无论如何,谢谢你的帮助。
猜你喜欢
  • 2011-05-11
  • 2013-10-09
  • 1970-01-01
  • 2012-08-29
  • 2023-01-12
  • 2018-09-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多