Проблема в том, что MultiDataTrigger
оценивается в режиме AND
, поэтому для того, чтобы быть оцененным как истинное, должны быть выполнены все условия.
когда комбо свернуто, первое условие не выполняется, следовательно, весь триггер оценивается как ложный. следовательно, оставив кнопку включенной.
чтобы решить эту проблему, добавьте еще один триггер, чтобы отключить кнопку, если комбо свернуто
Итак, вот полный пример достижения того же
<StackPanel>
<StackPanel.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVisConverter" />
<ObjectDataProvider x:Key="sampleData"
MethodName="GetValues"
ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="Visibility" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</StackPanel.Resources>
<CheckBox Content="Combo visibility"
IsChecked="True"
x:Name="check" />
<ComboBox x:Name="ComboName"
Visibility="{Binding IsChecked, ElementName=check,Converter={StaticResource BoolToVisConverter}}"
ItemsSource="{Binding Source={StaticResource sampleData}}" />
<Button Content="A button">
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ComboName, Path=Visibility}"
Value="Collapsed">
<Setter Property="IsEnabled"
Value="false" />
</DataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=ComboName, Path=Visibility}"
Value="Visible" />
<Condition Binding="{Binding ElementName=ComboName, Path=SelectedValue}"
Value="{x:Null}" />
</MultiDataTrigger.Conditions>
<Setter Property="IsEnabled"
Value="false" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</StackPanel>
Я обернул все необходимые элементы управления в панель стека, а затем использовал триггеры в стиле кнопок для управления тем же
поэтому, как упоминалось в вопросе, если все условия оцениваются как истинные, кнопка становится отключенной.
также, если комбо свернуто, кнопка останется неактивной.
вы можете настроить условия в соответствии с вашими потребностями
результат
person
pushpraj
schedule
11.07.2014
MultiDataTrigger
?, почему вам нужно использовать здесь ElementName для привязки, похоже, у вас задействовано более 1 ComboBox .. .. - person King King   schedule 11.07.2014Visibility
для ComboBox вCollapsed
илиHidden
, и он по-прежнему включен (не отключен, как вы сказали). - person King King   schedule 11.07.2014Multidatatrigger
должно бытьMultiDataTrigger
. - person King King   schedule 11.07.2014