适用于XAML Datatrigger,但不适用于XAMl MultiDataTrigger。

时间:2011-10-07 17:53:59

标签: wpf xaml

使用普通触发器时,我可以轻松地使用该功能。 但是当我使用MultiDataTrigger时,我无法让它工作。

这不起作用。

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="Brush_GridBackground" TargetType="{x:Type Grid}">
    <Style.Triggers>
        <MultiDataTrigger>
            <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding ElementName=cb_BackgroundColor, Path=SelectedItem.Tag}" Value="Red" />
                <Condition Binding="{Binding ElementName=cb_BackgroundColor, Path=SelectedItem.Tag}" Value="White" />
                <Condition Binding="{Binding ElementName=cb_BackgroundColor, Path=SelectedItem.Tag}" Value="Black" />
                <Condition Binding="{Binding ElementName=cb_BackgroundColor, Path=SelectedItem.Tag}" Value="Blue" />
                <Condition Binding="{Binding ElementName=cb_BackgroundColor, Path=SelectedItem.Tag}" Value="Green" />
            </MultiDataTrigger.Conditions>
            <Setter Property="Background" Value="{Binding ElementName=cb_BackgroundColor, Path=SelectedItem.Tag}" />
        </MultiDataTrigger>
    </Style.Triggers>
</Style>

这有效

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="Brush_GridBackground" TargetType="{x:Type Grid}">
    <Style.Triggers>
            <DataTrigger Binding="{Binding ElementName=cb_BackgroundColor, Path=SelectedItem.Tag}" Value="Red">
            <Setter Property="Background" Value="{Binding ElementName=cb_BackgroundColor, Path=SelectedItem.Tag}" />
        </DataTrigger>
        <DataTrigger Binding="{Binding ElementName=cb_BackgroundColor, Path=SelectedItem.Tag}" Value="White">
            <Setter Property="Background" Value="{Binding ElementName=cb_BackgroundColor, Path=SelectedItem.Tag}" />
        </DataTrigger>
        <DataTrigger Binding="{Binding ElementName=cb_BackgroundColor, Path=SelectedItem.Tag}" Value="Black">
            <Setter Property="Background" Value="{Binding ElementName=cb_BackgroundColor, Path=SelectedItem.Tag}" />
        </DataTrigger>
    </Style.Triggers>
</Style>

Howcome?

1 个答案:

答案 0 :(得分:0)

MultiDataTrigger就像在触发器中使用AND语句一样,所以基本上你是说Tag等于RedWhiteBlackBlueGreen,然后应用以下样式,但标记只能等于其中一个值,因此触发器总是最终为False。 / p>

如果我想要OR触发器,我会使用多种触发器(例如您的工作代码)。