2016-06-10 124 views
1

快速的問題..顯示一定的每個對象的變量爲一個ComboBox

我有這個類的對象的列表:

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

而且我想給List<Whatever>鏈接到ComboxBox,其中用戶會看到每個Whatever對象的Name對象。我怎樣才能做到這一點?

回答

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

創建視圖模型:

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

然後匹配查看

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

根據Model-View-Modelview Pattern

,如果你wan't使基於用戶輸入的變化這是更適合。 (這對於組合框來說是相當罕見的)。

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; 
} 
相關問題