如果选择/未选择组合框,如何启用/禁用文本框,标签,文本块等控件?例如如果选择的索引大于零,则启用控制,否则禁用。如何使用组合框选择绑定控件的IsEnabled属性?
答案 0 :(得分:5)
您可以将IsEnabled
绑定到ComboBox的SelectedIndex
属性,并使用IValueConverter
将其转换为Boolean。例如,在您的XAML中(显示启用Button
):
<ComboBox x:Name="cmbBox" ItemsSource="{Binding Source={StaticResource DataList}}"/>
<Button Grid.Column="1" IsEnabled="{Binding ElementName=cmbBox, Path=SelectedIndex, Converter={StaticResource IndexToBoolConverter}}"/>
然后你也需要一个转换器,例如:
public class IndexToBoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if ((int)value > 0)
{
return true;
}
else
{
return false;
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
您还要将Converter声明为资源,例如在您的Window中。
<local:IndexToBoolConverter x:Key="IndexToBoolConverter"/>
答案 1 :(得分:2)
我可能会做这样的事情。
<Grid>
<Grid.Resources>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=SelectedItem,
ElementName=TheCombo}"
Value="{x:Null}">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<ComboBox x:Name="TheCombo" Width="100">
<ComboBoxItem>Blah</ComboBoxItem>
<ComboBoxItem>Blah</ComboBoxItem>
<ComboBoxItem>Blah</ComboBoxItem>
</ComboBox>
<Button Content="Click Me" Margin="0,10"/>
</StackPanel>
</Grid>
希望这有帮助,欢呼!