0

内部に Dock パネルがある単純な境界線である XAML を使用して UserControl を作成しています。そして、ドック内には、プロパティとして以下の画像とテキストがあります(すべてがすでにわかっています)。

ただし、DockPanel の MouseEnter イベントで色を変更し、MouseLeave イベントがトリガーされたときに再びデフォルトに変更するには、すべてを含む Border が必要です。

それはうまくコンパイルされます。問題は、通常のウィンドウで使用するとトリガーが機能せず、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>
4

2 に答える 2

1

ドックパネルにブラシがない場合にも、この問題が発生する可能性があります。透過的であるため、ヒット テストでは検出されません。

于 2015-09-24T05:31:14.110 に答える