当第一个组合框被选中时激活第二个组合框
本文关键字:组合 激活 第二个 第一个 | 更新日期: 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;
}