WPF 组合框值

WPF combobox value

我在 xaml window 上有三个组合框 :

<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。我需要能够为这些下拉菜单获取选定的值 我知道我可以使用逻辑树助手循环遍历所有对象并获取值,但我不想那样做,因为我有太多控件,这将非常棘手。

无需在循环中创建新的组合框,您需要实际使用 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  );
}

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

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

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

Here 是一篇更详细的文章。

希望对您有所帮助。