WPF 用户控件 XAML 触发器不工作

WPF Usercontrol XAML Triggers not working

我正在制作一个带有 XAML 的用户控件,它是一个简单的边框,里面有一个停靠面板。在 Dock 中有一个图像和文本波纹管作为属性(我已经知道了)。

但是我需要包含所有内容的边框来更改 DockPanel 的 MouseEnter 事件的颜色,并在触发 MouseLeave 事件时再次将其更改为默认值。

它编译得很好。问题是,当我在正常 window 上使用它时,触发器甚至不工作,当我将鼠标悬停在 DockPanel 上时,鼠标光标不会改变。

<UserControl x:Name="StartBtn" x:Class="NMis.Controls.StartCenterButton"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="155" d:DesignWidth="155" FontFamily="Open Sans" TextOptions.TextFormattingMode="Display" ScrollViewer.VerticalScrollBarVisibility="Disabled" UseLayoutRounding="True" IsHitTestVisible="False">   
        <Border BorderThickness="1.5" Height="155" Width="155" CornerRadius="2">
            <Border.BorderBrush>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop x:Name="Grad1"  Color="#FF151515" Offset="0"/>
                    <GradientStop x:Name="Grad2" Color="#E54D9EA9" Offset="1"/>
                </LinearGradientBrush>
            </Border.BorderBrush>
            <DockPanel x:Name="Condominio_Dock" Margin="5,10,5,5" Cursor="Hand" Background="#FFF" MouseDown="DockPanel_MouseDown">
                <DockPanel.Triggers>
                    <EventTrigger RoutedEvent="Mouse.MouseEnter" SourceName="Condominio_Dock">
                        <BeginStoryboard>
                            <Storyboard>
                                <ColorAnimation To="#5fb357" Storyboard.TargetName="Grad1" Duration="0:0:0.5" Storyboard.TargetProperty="Color" From="#FF151515"></ColorAnimation>
                                <ColorAnimation To="#FF151515" Storyboard.TargetName="Grad2" Duration="0:0:0.5" Storyboard.TargetProperty="Color" From="#E54D9EA9"></ColorAnimation>
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger>
                    <EventTrigger RoutedEvent="Mouse.MouseLeave" SourceName="Condominio_Dock">
                        <BeginStoryboard>
                            <Storyboard>
                                <ColorAnimation To="#FF151515" Storyboard.TargetName="Grad1" Duration="0:0:0.5" Storyboard.TargetProperty="Color" From="#5fb357"></ColorAnimation>
                                <ColorAnimation To="#E54D9EA9" Storyboard.TargetName="Grad2" Duration="0:0:0.5" Storyboard.TargetProperty="Color" From="#FF151515"></ColorAnimation>
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger>
                </DockPanel.Triggers>
                <Image UseLayoutRounding="True" Stretch="Uniform" Source="{Binding ElementName=StartBtn, Path=Image}" Height="104" DockPanel.Dock="Top"></Image>
                <TextBlock Text="{Binding ElementName=StartBtn, Path=Text}" DockPanel.Dock="Top" TextTrimming="WordEllipsis" Margin="0,5,0,0" TextAlignment="Center" FontWeight="SemiBold"></TextBlock>
            </DockPanel>
        </Border>
</UserControl>

已修复。 显然 IsHitTestVisible 对于 DockPanel 使用 Triggers

必须为真

您也可能会遇到此问题,因为停靠面板没有画笔。因为它是透明的,所以它不会被命中测试找到。