WPF组合框值

时间:2015-04-06 14:44:15

标签: c# .net wpf combobox

我在xaml窗口上有三个组合框:

<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  );
}

我得到的值为null。我需要能够为这些下拉菜单选择值 我知道我可以使用逻辑树辅助循环遍历所有对象并获取值,但我不希望能够这样做,因为我有太多的控件,这将非常棘手。

2 个答案:

答案 0 :(得分: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  );
}

答案 1 :(得分:0)

我还想指出,你可以通过绑定完全避免这种类型的代码。您可以使用ItemsSource将属性绑定到组合框,并将属性绑定到SelectedValue,如此。

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

这将直接将您当前选择的值提供给您的绑定属性,以便在代码中使用,而无需通过代码隐藏添加项目和获取当前选定值的繁琐工作。

Here是一篇更详细的文章。

我希望这会有所帮助。