WPF multitrigger ссылается на 2 других элемента управления - PullRequest
1 голос
/ 06 апреля 2010

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

У меня это работает с 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) Могу ли я сделать это вне тега? Я не совсем уверен, где триггеры могут быть применены, большинство примеров делают это в Style или DataTemplates, но определение его в Style нарушает мой внешний вид и восприятие TextBox по умолчанию.

1 Ответ

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

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

...