WPF MutiDataTrigger не стреляет сеттер - PullRequest
0 голосов
/ 09 июля 2009

Я пытаюсь использовать MultiDataTriggers для включения / выключения кнопки на основе значения двух текстовых полей.

В документе указано, что условия в MultiDataTrigger логически объединены. В приведенном ниже примере, если txtFirst.Text - это foo, а txtSecond.Text - это строка, я бы хотел включить кнопку. Однако кнопка всегда остается отключенной (IsEnabled = false).

Я уверен, что мне здесь не хватает уловки, но тщательный поиск в Google никуда меня не привел ....

<StackPanel>
        <Button IsEnabled="False" Content="OK">
            <Button.Style>
                <Style>
                    <Style.Triggers>
                        <MultiDataTrigger>
                            <MultiDataTrigger.Conditions>
                                <Condition Binding="{Binding ElementName=txtFirst, Path=Text}" Value="foo"/>
                                <Condition Binding="{Binding ElementName=txtSecond, Path=Text}" Value="bar"/>
                            </MultiDataTrigger.Conditions>
                            <Setter Property="Button.IsEnabled" Value="True"/>
                        </MultiDataTrigger>
                    </Style.Triggers>
                </Style>
            </Button.Style>
        </Button>

        <TextBox x:Name="txtFirst"/>
        <TextBox x:Name="txtSecond"/>
    </StackPanel>

1 Ответ

3 голосов
/ 09 июля 2009

Установка свойства непосредственно на сам объект переопределяет любые настройки, запускаемые стилем. Измените объявление кнопки на:

<Button Content="OK">
    <Button.Style>
        <Style>
            <Setter Property="IsEnabled" Value="False"/>
            <Style.Triggers>

Теперь, когда свойство IsEnabled установлено в стиле, триггер может его изменить. Не спрашивай меня почему. :)

...