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



我来自网络背景,所以我真的很难处理这个问题。

当IsMouseOver为true并且我的Linking类中的类变量(称为_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>

您应该使用MultiDataTrigger(msdn)。

示例:

<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>

在上述示例中,CCD_ 2被设置为类型为CCD_ 3的对象。

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

最新更新