显示一定的每个对象的变量为一个ComboBox

显示一定的每个对象的变量为一个ComboBox

问题描述:

快速的问题..显示一定的每个对象的变量为一个ComboBox

我有这个类的对象的列表:

public class Whatever 
{ 
    public string Name { get; set; } 
    public List<blaBla> m_blaBla { get; set; } 
    // .. 
} 

而且我想给List<Whatever>链接到ComboxBox,其中用户会看到每个Whatever对象的Name对象。我怎样才能做到这一点?

您既可以使用ComboBox.ItemTemplate这样的:

C#:

List<Whatever> lst = new List<Whatever>(); 
public MainWindow() 
{ 
    InitializeComponent(); 
    cmb.ItemsSource = lst; 
} 

XAML:

<ComboBox Name="cmb"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Name}" /> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

或者使用DisplayMemberPath

<ComboBox Name="cmb" DisplayMemberPath="Name">    
</ComboBox> 

创建视图模型:

public ObservableCollection<Whatever> WhCol 
{ 
    get { return this.Name; } 
    set { } 
} 

然后匹配查看

<ComboBox DisplayMemberPath="Name" ItemsSource="{Binding WhCol}" /> 

根据Model-View-Modelview Pattern

,如果你wan't使基于用户输入的变化这是更适合。 (这对于组合框来说是相当罕见的)。

或者只是覆盖ToString()功能,它会做的工作适合你:

public class Whatever 
{ 
    public string Name { get; set; } 
    public List<blaBla> m_blaBla { get; set; } 
    // .. 
    public override string ToString() 
    { 
     return Name; 
    } 
} 

然后:

List<Whatever> MyList = new List<Whatever>(); 
public MainWindow() 
{ 
    InitializeComponent(); 
    MyComboBox.ItemsSource = MyList; 
}