当第一个组合框被选中时激活第二个组合框

本文关键字:组合 激活 第二个 第一个 | 更新日期: 2023-09-27 18:17:29

我的usercontrol上有两个组合框。我的目标是,当第一个被选中(里面有一个项目),那么第二个应该是活跃的。下面是代码片段:

<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>

当第一个组合框被选中时,我如何激活第二个组合框?

当第一个组合框被选中时激活第二个组合框

由于您已经使用了数据绑定,您可以在视图模型中创建一个布尔属性,并在设置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 }"/>

在第一个组合框上创建一个SelectionChanged事件:(这可以在wpf或您的Load事件中完成)

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

Active -你的意思是"Enable"?

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