在mouseover和类变量为true时应用样式

时间:2013-08-28 16:28:24

标签: wpf xaml triggers

我来自网络背景,所以我真的很挣这个。

当我的链接类中的IsMouseOver都为true且类变量(称为_isLinking)为true时,我需要应用一种样式。我有使用IsMouseOver构建并运行的样式,但我不确定如何使用_isLinking来获得第二个条件。

<Path.Style>
    <Style>
        <Setter Property="Path.Stroke" Value="Black" />
        <Setter Property="Path.Fill" Value="LightGray" />
        <Style.Triggers>
            <Trigger Property="Canvas.IsMouseOver" Value="True">
                <Setter Property="Path.Stroke" Value="Blue" />
                <Setter Property="Path.Fill" Value="LightBlue" />
            </Trigger>
        </Style.Triggers>
    </Style>
</Path.Style>

1 个答案:

答案 0 :(得分:2)

您应该使用MultiDataTriggermsdn)。

示例:

<Canvas>
    <Path>
        <Path.Data>
            <PathGeometry Figures="M 10,100 C 10,300 300,-200 300,100" />
        </Path.Data>
        <Path.Style>
            <Style>
                <Setter Property="Path.Stroke" Value="Black" />
                <Setter Property="Path.Fill" Value="LightGray" />
                <Style.Triggers>                            
                    <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>                                    
                            <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Canvas}}" Value="True" />
                            <Condition Binding="{Binding IsLinking}" Value="True" />
                        </MultiDataTrigger.Conditions>
                        <MultiDataTrigger.Setters>
                            <Setter Property="Path.Stroke" Value="Blue" />
                            <Setter Property="Path.Fill" Value="LightBlue" />
                        </MultiDataTrigger.Setters>
                    </MultiDataTrigger>
                </Style.Triggers>
            </Style>
        </Path.Style>
    </Path>
</Canvas>

在上面的示例中,DataContext设置为Linking类型的对象。

 this.DataContext = new Linking { IsLinking = true };