Ugrás a tartalomhoz

.NET Programming Technologies

Gergely Kovásznai, Csaba Biró

Eszterházy Károly College

MultiTrigger and MultiDataTrigger

MultiTrigger and MultiDataTrigger

We have an opportunity to specify only one condition in a case of a simple Trigger or DataTrigger. If you want to specify multiple conditions, the MultiTrigger and MultiDataTrigger as complex triggers should be used.

The conditions can be placed among the Conditions tags through these triggers.

If more than one copy of Condition defined, the trigger effect will be adaptive when all conditions are satisfied.

„Or” relationship is possible between each conditions.

Example X.4 MultiTrigger

X.4. MultiTrigger

<Window x:Name="window" x:Class="MultiTrigger.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

         xmlns:sys="clr-namespace:System;assembly=mscorlib"

        Title="MainWindow" Height="350" Width="200">

    <Grid>

        <Grid.Resources>

            <DataTemplate DataType="{x:Type sys:String}">

                <StackPanel>

                    <TextBlock x:Name="tBlock" Text="{Binding}" HorizontalAlignment="Center"></TextBlock>

                    <StackPanel>

                        <Separator />

                        <TextBlock Text="Combination: " />

                        <CheckBox x:Name="cBox1"/>

                        <CheckBox x:Name="cBox2" />

                        <CheckBox x:Name="cBox3" />

                    </StackPanel>

                    <Separator />

                    <StackPanel>

                        <TextBlock Text="Code:" />

                        <TextBox x:Name="tBox"  />

                    </StackPanel>

                    <TextBlock x:Name="tBlock2" Text="Released" Foreground="Green"

                               HorizontalAlignment="Center"

                               Visibility="Hidden" />

                </StackPanel>

                <DataTemplate.Triggers>

                    <MultiTrigger>

                        <MultiTrigger.Conditions>

                            <Condition

                                                            SourceName="cBox1"

                                                            Property="IsChecked"

                                                            Value="False" />

                            <Condition

                                                            SourceName="cBox2"

                                                            Property="IsChecked"

                                                            Value="True" />

                            <Condition

                                                            SourceName="cBox3"

                                                            Property="IsChecked"

                                                            Value="True" />

                            <Condition

                                                            SourceName="tBox"

                                                            Property="Text"

                                                            Value="123456" />

                        </MultiTrigger.Conditions>

                        <MultiTrigger.Setters>

                            <Setter

                                                    TargetName="tBlock2"

                                                  Property="Visibility" Value="Visible" />

                            <Setter TargetName="tBlock" Property="Visibility" Value="Collapsed" />

                        </MultiTrigger.Setters>

                    </MultiTrigger>

                </DataTemplate.Triggers>

            </DataTemplate>

        </Grid.Resources>

        <ContentControl>

            <sys:String>locked</sys:String>

        </ContentControl>

    </Grid>

</Window>