DataTrigger внутри MultiDataTrigger? - PullRequest
0 голосов
/ 02 июля 2018

Я хочу изменить 2 свойства в 2 различных условиях, используя Multi- / DataTrigger.

У меня есть 1 кнопка, которая меняет свое свойство IsEnabled, когда ValidationRule возвращает ошибку.

Я также хочу изменить свойство Command этой кнопки, но при других условиях.

<Button Content="Save">
    <Button.Style>
        <Style TargetType="Button" BasedOn="{StaticResource MaterialDesignFlatButton}">
            <Setter Property="IsEnabled" Value="False" />
            <Style.Triggers>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding Path=(Validation.HasError), ElementName=FirstNameBox}" Value="False" />
                        <Condition Binding="{Binding Path=(Validation.HasError), ElementName=LastNameBox}" Value="False" />
                            [...]
                    </MultiDataTrigger.Conditions>
                    <Setter Property="IsEnabled" Value="True" />
                </MultiDataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

Теперь я хочу реализовать еще один триггер, который изменяет Binding свойства Command, когда привязка любого свойства равна XY. Поэтому мне нужно реализовать это рядом с Datatrigger выше.

<Setter Property="Command" Value="{Binding CreateEmployeeCommand}" />
<DataTrigger Binding="{Binding CurrentManageMode}" Value="2">
    <Setter Property="Command" Value="{Binding EditEmployeeCommand}" />
</DataTrigger>

Так возможно ли одновременно иметь 2 триггера?

1 Ответ

0 голосов
/ 02 июля 2018

Хорошо, я исправил это, добавив еще один триггер только в Style.Triggers. Я не пробовал это, потому что многие элементы управления / свойства не позволяют несколько Content.

<Button.Style>
    <Style TargetType="Button" BasedOn="{StaticResource MaterialDesignFlatButton}">
    <Setter Property="IsEnabled" Value="False" />
    <Setter Property="Command" Value="{Binding CreateEmployeeCommand}" />
        <Style.Triggers>
            <DataTrigger Binding="{Binding CurrentManageMode}" Value="2">
                <Setter Property="Command" Value="{Binding EditEmployeeCommand}" />
            </DataTrigger>
            <MultiDataTrigger>
                <MultiDataTrigger.Conditions>
                    <Condition Binding="{Binding Path=(Validation.HasError), ElementName=FirstNameBox}" Value="False" />
                    <Condition Binding="{Binding Path=(Validation.HasError), ElementName=LastNameBox}" Value="False" />
                 </MultiDataTrigger.Conditions>
                 <Setter Property="IsEnabled" Value="True" />
             </MultiDataTrigger>
         </Style.Triggers>
     </Style>
</Button.Style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...