当前位置: 首页 > 知识库问答 >
问题:

选择第一个组合框时激活第二个组合框

仲孙昊焱
2023-03-14

我的用户控件上有两个组合框。我的目标是,当第一个被选中(里面有一个项目)时,第二个应该处于活动状态。以下是代码片段:

<UserControl x:Class="RestoreComputer.Views.ConfigView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="30"/>
            <RowDefinition Height="60"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="1" Orientation="Horizontal" Margin="20,0,0,0" Height="50">
            <ComboBox Name="_server" ItemsSource="{Binding Path=Servers}" SelectedItem="{Binding Server}" IsSynchronizedWithCurrentItem="True" Width="100"  VerticalContentAlignment="Center" Text="18"/>
            <Image Source="../Images/narrow.png" Margin="10,0,10,0"/>
            <ComboBox Name="_computer" IsEnabled="False"/>
        </StackPanel>
    </Grid>
</UserControl>

当第一个是项目选择时,如何激活第二个组合框?

共有3个答案

南门鸿雪
2023-03-14

活动-你的意思是“启用”?

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (comboBox1.SelectedIndex != -1)
    {
        comboBox2.Enabled = true;
    }
    else
    {
        comboBox2.Enabled = false;
    }
}

甚至更简单

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
        comboBox2.Enabled = comboBox1.SelectedIndex != -1;
}
郏佐
2023-03-14

在第一个组合框上创建一个选择改变事件:(这可以在wpf或您的加载事件中完成)

_server.SelectionChanged += OnSelectionChanged;

获取方法

private void OnSelectionChanged(object o, eventArgs e)
{
 //Do whatever you want to do with the selection data
 DoSomething();

 //Focus the second combobox:
 _computer.Focus();
}
淳于俊迈
2023-03-14

由于您已经在使用数据绑定,因此您可以在视图模型中创建一个布尔属性,并在设置Server属性时将其设置为true。并将该属性绑定到您的第二个启用组合框的属性。

在您的视图中模型

private bool comboEnabled = false;
public bool ComboEnabled
{
    get
    {
        return comboEnabled;
    }
    set
    {
        comboEnabled = value;
        onPropertyChanged("ComboEnabled");
    }
}

//and in your Server property
public Server
{
    get---YourCode{}
    set
    {
        if(value != null)
        ComboEnabled = true;
        ---Yourcode
    }
}

//and in your xaml
<ComboBox Name="_computer" IsEnabled="{Binding ComboEnabled }"/>
 类似资料:
  • 日安, 我希望我的组合框选择其中的第一个项目。我正在使用C#和WPF。我从DataSet读取数据。要填充组合框: 组合框XAML代码: 如果我尝试: 它不起作用。

  • 我有3个组合框,当我选择第一个组合框时,我希望第二个组合框的第一项和第三个组合框被自动选择。当选择第二个组合框的第一项时,将触发第三个组合框的on选择事件,但参数未定义 当我选择第一个组合框的项目时,这里的是未定义的。当我选择第二个组合框的项目时,它不是 为什么?

  • 所以,我有一个奇怪的问题,我从组合框列表中选择一个项目,为了填充第二个组合框,我必须首先从第一个组合框中再次选择单词,而不是从项目列表中,而是单词本身。只有这样,代码才会注册我选择了该项目。我拥有的代码是简单的$variable.SelectedItem。参见下面的代码; 我想做的就是从下拉列表中选择位置“医院”,然后第二个名为“$ComboBox_Printer”的组合框填充我服务器中的打印机名

  • 问题内容: 我有一个生成的DataFrame,如下所示: 结果如下: 如您所见,DataFrame按升序排列,然后按降序排列。 我想选择每个组的第一行,即 从小时== 0的组中选择(0,cat26,30.9) 从小时= 1的组中选择(1,cat67,28.5) 从小时== 2的组中选择(2,cat56,39.6) 等等 因此,所需的输出将是: 能够选择每个组的前N行也可能很方便。 任何帮助都将受到

  • 我正在尝试使用两个ttk组合框从sqlite数据库中获取数据。我设法使用combo_division()函数在一个名为的组合框中列出项目。现在我试图对第二个名为产品菜单的组合框做类似的事情,但是列表需要根据组合框中的第一个选定项目缩小范围。 为了让SQL查询传递第二个组合框所需的信息,我想到了这样的东西: 到目前为止两个组合框的代码:

  • 问题内容: 我们正在使用Selenium WebDriver和JBehave在我们的Web应用程序上运行“集成”测试。我有一种方法,可以在表单输入中输入一个值。 但是,当我尝试使用它在下拉列表中选择一个项目时,它(毫无疑问)失败了 java.lang.UnsupportedOperationException:您只能设置作为输入元素的元素的值 如何在组合中选择一个值? 问题答案: 这是怎么做的: