MultiDataTrigger.Conditions Property
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Gets a collection of Condition objects. Changes to property values are applied when all the conditions in the collection are met.
public:
property System::Windows::ConditionCollection ^ Conditions { System::Windows::ConditionCollection ^ get(); };
public System.Windows.ConditionCollection Conditions { get; }
member this.Conditions : System.Windows.ConditionCollection
Public ReadOnly Property Conditions As ConditionCollection
Property Value
A collection of Condition objects. The default is an empty collection.
Examples
In the following example, the ItemsSource property of the ListBox is bound to Places
, an ObservableCollection<T> of Place
objects. Place
objects have properties Name
and State
. The definition of Place
and Places
are not shown.
Each ListBoxItem of the ListBox displays a Place
object. The Style in the example is applied to each ListBoxItem. The Condition elements of the MultiDataTrigger specify that if the Name
and State
of the Place
data item are Portland
and OR
respectively, then the background of corresponding ListBoxItem is set to Cyan
.
<Window.Resources>
<c:Places x:Key="PlacesData"/>
<Style TargetType="ListBoxItem">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=State}" Value="WA">
<Setter Property="Foreground" Value="Red" />
</DataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=Name}" Value="Portland" />
<Condition Binding="{Binding Path=State}" Value="OR" />
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="Cyan" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
<DataTemplate DataType="{x:Type c:Place}">
<Canvas Width="160" Height="20">
<TextBlock FontSize="12"
Width="130" Canvas.Left="0" Text="{Binding Path=Name}"/>
<TextBlock FontSize="12" Width="30"
Canvas.Left="130" Text="{Binding Path=State}"/>
</Canvas>
</DataTemplate>
</Window.Resources>
<StackPanel>
<TextBlock FontSize="18" Margin="5" FontWeight="Bold"
HorizontalAlignment="Center">Data Trigger Sample</TextBlock>
<ListBox Width="180" HorizontalAlignment="Center" Background="Honeydew"
ItemsSource="{Binding Source={StaticResource PlacesData}}"/>
</StackPanel>
Remarks
A MultiDataTrigger object is similar to a MultiTrigger, except that the conditions of a MultiDataTrigger are based on property values of bound data instead of those of a UIElement. In a MultiDataTrigger, a condition is met when the property value of the data item matches the specified Value. That value is first converted to the type of the value of the binding, if possible, and then the two values are compared using the Object.Equals
method. The MultiTrigger applies the associated setters or actions when all of the conditions are true (binary AND
operation).
For a MultiDataTrigger, each condition in the collection must set both the Binding and Value properties. For more information, see Binding.
XAML Property Element Usage
<object>
<object.Conditions>
zeroOrMoreConditions
</object.Conditions>
</object>
XAML Values
zeroOrMoreConditions
Zero or more Condition objects.