2016-06-10 4 views
1

Быстрый вопрос ..Display определенная переменная каждого объекта в Combobox

У меня есть список объектов этого класса:

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

И я хочу, чтобы связать List<Whatever> к ComboxBox, где пользователь видит Name каждого объекта Whatever. Как я могу это сделать?

ответ

4

Вы можете использовать либо 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> 
0

Создать ViewModel:

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

А потом Matching Посмотреть

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

Согласно Model-View-Modelview Pattern

Это больше подходит, если вы wan't для внесения изменений на основе пользовательского ввода. (Что редко встречается для combobox).

1

Или просто переопределить функцию 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; 
} 
Смежные вопросы