0

我来自网络背景,所以我真的很努力解决这个问题。

当 IsMouseOver 为 true 并且我的 Linking 类中的类变量(称为 _isLinking)为 true 时,我需要应用一种样式也为 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>
4

1 回答 1

2

您应该使用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>

在上面的示例DataContext中设置为 object 类型Linking

 this.DataContext = new Linking { IsLinking = true };
于 2013-08-28T16:56:39.357 回答