2010-04-05 3 views
1

У меня есть две CheckBoxes и TextBox. Я хочу, чтобы TextBox имел IsEnabled = False, если оба CheckBox имеют IsChecked = False. Могу ли я сделать это с помощью MultiTrigger? Я продолжаю получать ошибки, пытаясь использовать свойство Source.WPF multitrigger, ссылающийся на 2 других элемента управления

У меня есть работа с MultiDataTriggers, как вы можете видеть ниже. Но есть два вопроса.

1) Это мой единственный выбор? Могу ли я сделать это с помощью MultiTrigger?

<TextBox.Style> 
    <Style TargetType="TextBox"> 
     <Style.Triggers> 
      <MultiDataTrigger> 
       <MultiDataTrigger.Conditions> 
        <Condition Binding="{Binding ElementName=uxDmm , Path=IsChecked}" 
            Value="False" /> 
        <Condition Binding="{Binding ElementName=uxGpm , Path=IsChecked}" 
            Value="False" /> 
       </MultiDataTrigger.Conditions> 
       <Setter Property="IsEnabled" 
          Value="False" /> 
      </MultiDataTrigger> 
     </Style.Triggers> 
    </Style> 
</TextBox.Style> 

2) Могу ли я сделать это вне тега? Я не совсем уверен, где можно применить триггеры, большинство образцов делают это в стиле или DataTemplates, но определение его в стиле вызывает беспорядок в стиле TextBox по умолчанию.

ответ

2
  1. Как вы это сделали, это правильно. Я не уверен в MultiTrigger, но этот подход все равно выглядит лучше.
  2. Если вы хотите, чтобы ваши Style быть основан на стиле текстового поля по умолчанию, выполните следующие действия:

<Style TargetType="TextBox" BasedOn="{StaticResource {x:Type TextBox}}">

+0

Благодаря Чарли. Я не понял, как сделать стиль полученным из каскадных стилей по умолчанию, которые у меня уже были. Ваш синтаксис исправил это. Я действительно хотел бы, чтобы был лучший способ определить триггеры, вне стиля. Благодаря! – BrettRobi