c# - 当鼠标悬停在另一个椭圆上时,如何更改椭圆的填充颜色?

标签 c# wpf triggers

当鼠标悬停在另一个椭圆上时,如何更改椭圆的填充颜色?

当鼠标悬停在“外部”椭圆上时,我想更改“内部”椭圆的颜色。你是通过什么方式实现这种行为的?

    <Canvas
            HorizontalAlignment="Center"
            VerticalAlignment="Center"
            Width="50" Height="50">
        <Ellipse x:Name="inner" Width="50"
                 Height="50"
                 Fill="White"
                 Canvas.ZIndex="0"
                 HorizontalAlignment="Center"
                 VerticalAlignment="Center" Stroke="Black">
            <Ellipse.Style>
                <Style TargetType="Ellipse">
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Trigger.EnterActions>
                                <BeginStoryboard>
                                    <Storyboard>
                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Ellipse.Fill).(SolidColorBrush.Color)">
                                            <EasingColorKeyFrame KeyTime="0"  Value="Black" />
                                        </ColorAnimationUsingKeyFrames>
                                    </Storyboard>
                                </BeginStoryboard>
                            </Trigger.EnterActions>
                            <Trigger.ExitActions>
                                <BeginStoryboard>
                                    <Storyboard>
                                        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Ellipse.Fill).(SolidColorBrush.Color)">
                                            <EasingColorKeyFrame KeyTime="0"  Value="White" />
                                        </ColorAnimationUsingKeyFrames>
                                    </Storyboard>
                                </BeginStoryboard>
                            </Trigger.ExitActions>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Ellipse.Style>
        </Ellipse>
    <Ellipse x:Name="outter" Width="44"
                 Height="44"
                 Fill="Blue"
                 Canvas.ZIndex="1"
                 Canvas.Left="3"
                 Canvas.Top="3">
    </Ellipse>
    </Canvas>

最佳答案

您可以使用 DataTrigger 与另一个 Ellipse 的 IsMouseOver 属性的绑定(bind):

<Canvas>
    <Ellipse Width="50" Height="50">
        <Ellipse.Style>
            <Style TargetType="Ellipse">
                <Setter Property="Fill" Value="White"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsMouseOver, ElementName=outer}"
                                 Value="True">
                        <Setter Property="Fill" Value="Black"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Ellipse.Style>
    </Ellipse>
    <Ellipse x:Name="outer" Canvas.Left="3" Canvas.Top="3"
             Width="44" Height="44" Fill="Blue"/>
</Canvas>

关于c# - 当鼠标悬停在另一个椭圆上时,如何更改椭圆的填充颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43737744/

相关文章:

c# - 正则表达式正确拆分

c# - LINQ - 为匿名类型的只读属性赋值

c# - XamlWriter.Save() 没有序列化 DependencyProperties

c# - 动态创建和删除对象

c# - 自定义 LINQ 风格的实现

c# - 向串口发送数据时的异步数字时钟

mysql - 触发器不适用于长文本字段

Mysql触发器不起作用

mysql - 记录更改值时选择

c# - Resharper Active 热点禁用智能感知