c# – 基于SelectedItem设置ComboBox的IsEnabled属性
发布时间:2020-12-15 17:43:30 所属栏目:百科 来源:网络整理
导读:我想根据另一个ComboBox中是否选择了一个项来启用/禁用ComboBox.我能够通过在Style上设置触发器来使其工作,但这会覆盖我对组合框的自定义全局样式.有没有另一种方法来获得相同的功能而不会失去我的风格? ComboBox Grid.Column="1" Grid.Row="1" Name="Analy
我想根据另一个ComboBox中是否选择了一个项来启用/禁用ComboBox.我能够通过在Style上设置触发器来使其工作,但这会覆盖我对组合框的自定义全局样式.有没有另一种方法来获得相同的功能而不会失去我的风格?
<ComboBox Grid.Column="1" Grid.Row="1" Name="AnalysisComboBox" MinWidth="200" VerticalAlignment="Center" HorizontalAlignment="Left" ItemsSource="{Binding Path=AvailableAnalysis}"> <ComboBox.Style> <Style TargetType="{x:Type ComboBox}"> <Setter Property="IsEnabled" Value="True" /> <Style.Triggers> <DataTrigger Binding="{Binding SelectedItem,ElementName=ApplicationComboBox}" Value="{x:Null}"> <Setter Property="IsEnabled" Value="False" /> </DataTrigger> </Style.Triggers> </Style> </ComboBox.Style> </ComboBox> 解决方法
您不需要通过Style执行此操作,您可以使用值转换器直接绑定IsEnabled属性,如下所示:
<ComboBox Grid.Column="1" Grid.Row="1" Name="AnalysisComboBox" MinWidth="200" VerticalAlignment="Center" HorizontalAlignment="Left" IsEnabled={Binding SelectedItem,ElementName=ApplicationComboBox,Converter={StaticResource NullToFalseConverter}}" ItemsSource="{Binding Path=AvailableAnalysis}"/> 其中NullToFalseConverter是以下转换器实例的键: public class NullToFalseConverter: IValueConverter { public object Convert(object value,Type targetType,object parameter,System.Globalization.CultureInfo culture) { return value == null; } public object ConvertBack(object value,System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |