2012-03-09 87 views
0

我有以下XAML:将列表<Group>绑定到ComboBox?

<ComboBox 
Name="groupComboBox" 
ItemsSource="{Binding Path=MyServiceMap.Groups}" 
DisplayMemberPath="{Binding Name}"/> 

在后面的代码我设置this.DataContext到我的视图模型。

private ServiceMap _serviceMap; 
    public ServiceMap MyServiceMap 
    { 
     get 
     { 
      return _serviceMap; 
     } 
     set 
     { 
      _serviceMap = value; 
      OnPropertyChanged("MyServiceMap"); 
     } 
    } 

我ServiceMap类是

public class ServiceMap 
{ 
    //other code 
    public List<Group> Groups = new List<Group>(); 
} 

最后:

public class Group 
{ 
    public string Name { get; set; } 
} 

不幸的是,这是行不通的。我如何绑定组合框来显示组名?

回答

1

您的代码有两个问题。首先,绑定仅适用于属性,因此绑定无法找到组字段。将其更改为属性。

public class ServiceMap 
{ 
    public List<Group> Groups { get; set; } 
} 

第二个是DisplayMemberPath等待字符串不是绑定。只需将其更改为“名称”。

<ComboBox Name="groupComboBox" 
    ItemsSource="{Binding Path=MyServiceMap.Groups}" 
    DisplayMemberPath="Name" /> 
+0

Tnx其工作。我用一个名称替换它,但保持列表原样。 – Bip 2012-03-09 17:12:23

0

您是否试过DisplayMemberPath =“Name”?

+0

是的,现在工作。 Tnx :) – Bip 2012-03-09 17:12:52