2015-04-06 72 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是一篇更详细的文章。

我希望这会有所帮助。