我在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。我需要能够为这些下拉菜单选择值 我知道我可以使用逻辑树辅助循环遍历所有对象并获取值,但我不希望能够这样做,因为我有太多的控件,这将非常棘手。
答案 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是一篇更详细的文章。
我希望这会有所帮助。