【问题标题】:WPF Bind ItemSource to Property of Instance in ArrayWPF 将 ItemSsource 绑定到数组中实例的属性
【发布时间】:2015-03-11 09:32:29
【问题描述】:

假设我有一堂课Organisation

public class Organisation(){
   public string Name{
      get;
      set;
   }
   public string Code{
      get;
      set;
   }
}

然后我创建一个 Organisation 数组:

public Organisation[] Organisations;

组织信息存储在xml中,填充到数组中,效果很好。

我的问题是,我想将 Combobox 的 ItemSource 绑定到我的 Organizations 的 Name 属性。

如果我只有一个代表名称的字符串数组,那就很容易了:

public string[] OrgansationNames = new string[]{"Organ1", "Organ2" /**/};

然后我可以像这样轻松绑定:

ItemSource="{Binding Path=OrganisationNames}"

显然它有点复杂,我需要这样的东西:

ItemSource="{Binding Path=Organisations[].Name}"

我不清楚在这种情况下我应该如何指定路径...

【问题讨论】:

    标签: c# arrays wpf binding


    【解决方案1】:

    你可以使用DisplayMemberPath属性:

    <ComboBox ...
              ItemSource="{Binding Path=OrganisationNames}"
              DisplayMemberPath="Name" />
    

    此外,您可以使用SelectedValuePath 属性,它将指定用于确定SelectedValue 属性值的属性的路径。

    <ComboBox ...
              ItemSource="{Binding Path=OrganisationNames}"
              DisplayMemberPath="Name" 
              SelectedValuePath="ID"/>
    

    如果你没有Id,那么你也可以将SelectedValuePath设置为Name

    【讨论】:

    • 我对它进行了测试,它可以正常工作(!)而无需指定 SelectedValuePath。它应该解决什么问题?
    • 你可以删除它,SelectedValuePath 属性指定了用于确定 SelectedValue 属性值的属性的路径。
    • 这绝对是惊人的!我不知道SVP。天哪,非常感谢。这将为我节省一些电话 :) 将在 7 分钟内接受...
    • @Farhad Jabiyev:只是为了完成答案。如果您需要在每个项目中显示更多内容,而不是仅显示单个属性,例如FirstName 和 LastName 和 Photo,您可以使用 ItemTemplate 而不是 DisplayMemberPath:msdn.microsoft.com/en-us/library/ms742521(v=vs.110).aspx
    猜你喜欢
    • 2017-09-18
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-11
    • 2013-09-13
    • 2011-05-22
    相关资源
    最近更新 更多