2015-04-06 82 views
0

我有一個XAML窗口上三個組合框:WPF組合框的值

<Grid> 
    <ComboBox Name="cbo1" Margin="40,37,328,250" SelectionChanged="OnComboBoxChanged" /> 
    <ComboBox Name="cbo2" Margin="40,145,328,142" SelectionChanged="OnComboBoxChanged"/> 
    <ComboBox Name="cbo3" Margin="40,91,328,196" SelectionChanged="OnComboBoxChanged" /> 
</Grid> 

我值分配給這些負載,我正在寫一個例行的工作,可以通過它可以對名稱的數組循環這些組合框,並獲得選定的值:

string[] comboNameLst = {"cbo1","cbo2" , "cbo3" }; 
foreach (string s in comboNameLst) 
{     
    ComboBox cbo = new ComboBox(); 
    cbo.Name = s; 

    MessageBox.Show("ID is" + id + "and cbo is" + cbo.Name); 
    MessageBox.Show("selected item" + cbo.SelectedItem ); 
} 

我得到的值爲空。我需要能夠得到這些下拉選擇的值 我知道我可以使用邏輯樹輔助循環遍歷所有的對象,並獲得價值,但我不希望能夠這樣做,因爲我有太多的控制這將是非常棘手的。

回答

0

而是在循環創建一個新的組合框的,實際上你需要從你的UI使用的箱子:

ComboBox[] comboNameLst = {cbo1, cbo2, cbo3}; 
foreach (ComboBox cbo in comboNameLst) 
{     
    MessageBox.Show("ID is" + id + "and cbo is" + cbo.Name); 
    MessageBox.Show("selected item" + cbo.SelectedItem ); 
} 
0

我也想指出的是,就可以避免這種類型的代碼完全捆綁。您可以使用ItemsSource將屬性綁定到組合框,並像這樣將屬性綁定到SelectedValue。

<ComboBox ItemsSource="{Binding ListProperty}" 
      DisplayMemberPath="ValueString" 
      SelectedValuePath="ValueString" 
      SelectedValue="{Binding SelectedValueProperty}" /> 

這會在你的代碼中使用無添加的項目,並通過代碼隱藏獲得他們當前選擇的值的繁重的工作直接提供當前選擇的值,你的綁定屬性。

Here是一篇更詳細的文章。

我希望這會有所幫助。