Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 鼠标事件被后面的元素搞砸了?_C#_Wpf - Fatal编程技术网

C# 鼠标事件被后面的元素搞砸了?

C# 鼠标事件被后面的元素搞砸了?,c#,wpf,C#,Wpf,我正在覆盖GroupBox标题的模板,如下所示: <Style x:Key="styleScoreComp" TargetType="{x:Type GroupBox}"> <Setter Property="HeaderTemplate"> <Setter.Value> <DataTemplate>

我正在覆盖GroupBox标题的模板,如下所示:

  <Style x:Key="styleScoreComp" TargetType="{x:Type GroupBox}">
                <Setter Property="HeaderTemplate">
                    <Setter.Value>
                        <DataTemplate>
                            <Grid >
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="*"/>
                                </Grid.ColumnDefinitions>
                                <TextBlock Grid.Column="0" Text="{Binding}" Foreground="Black" FontWeight="Bold" FontSize="20" VerticalAlignment="Center"/>
                                <StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" >
                                    <Composer:AddElementButton Type="Composite"/>
                                    <Composer:AddElementButton Type="Calculation"/>
                                    <Composer:AddElementButton Type="SimulationValue"/>
                                </StackPanel>
                            </Grid>    
                        </DataTemplate>
                    </Setter.Value>
                </Setter>
            </Style>

加法器按钮

<Border x:Name="borderButton" BorderThickness="1" BorderBrush="Silver" CornerRadius="4" Cursor="Hand" Margin="5"  Background="White" Width="50" Height="45"  MouseEnter="Border_MouseEnter" MouseLeave="Border_MouseLeave"  MouseLeftButtonUp="borderButton_MouseLeftButtonUp">
        <Canvas HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
            <Image x:Name="imgType" Source="{Binding TypeImage, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" 
                   Cursor="Hand" Stretch="Uniform"  Width="24" Height="24" Canvas.Top="3" Canvas.Left="13"    />                
            <Image Canvas.Top="30" Canvas.Left="7" Source="add.png" Cursor="Hand" Stretch="Uniform"  Width="36" Height="9" VerticalAlignment="Bottom"   />                
        </Canvas>       
    </Border>

基本上,它可以工作,但是当你把鼠标放在按钮的中间时,它认为鼠标离开了边界控件。当鼠标移动到GroupBox边框所在的位置时,似乎会发生这种情况。见下图:


这是怎么回事?

所以问题在于groupbox边框的绘制顺序。我找到了一个描述问题的站点:

我通过将GroupBox样式设置为以下方式修复了它:

>  <Style TargetType="{x:Type GroupBox}" x:Key="styleTest">
>                 <Setter Property="BorderBrush" Value="#D5DFE5"/>
>                 <Setter Property="BorderThickness" Value="1"/>
>                 <Setter Property="Template">
>                     <Setter.Value>
>                         <ControlTemplate TargetType="{x:Type GroupBox}">
>                             <Grid SnapsToDevicePixels="true">
>                                 <Grid.ColumnDefinitions>
>                                     <ColumnDefinition Width="6"/>
>                                     <ColumnDefinition Width="Auto"/>
>                                     <ColumnDefinition Width="*"/>
>                                     <ColumnDefinition Width="6"/>
>                                 </Grid.ColumnDefinitions>
>                                 <Grid.RowDefinitions>
>                                     <RowDefinition Height="Auto"/>
>                                     <RowDefinition Height="Auto"/>
>                                     <RowDefinition Height="*"/>
>                                     <RowDefinition Height="6"/>
>                                 </Grid.RowDefinitions>
>                                 <Border Background="{TemplateBinding Background}" BorderBrush="Silver"
>                                         BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="4"
> Grid.Column="0" Grid.ColumnSpan="4" Grid.Row="1" Grid.RowSpan="3"/>   
> 
>                                 <ContentPresenter Margin="{TemplateBinding Padding}"
> SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
> Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="2"/>                    
> 
>                                 <Border x:Name="Header" Padding="3,1,3,0" Grid.Column="1" Grid.Row="0" Grid.RowSpan="2">
>                                     <ContentPresenter DataContext="{Binding}" SnapsToDevicePixels="{TemplateBinding
> SnapsToDevicePixels}" ContentSource="Header"
> RecognizesAccessKey="True"/>
>                                 </Border>
>                             </Grid>
>                         </ControlTemplate>
>                     </Setter.Value>
>                 </Setter>
>             </Style>
>
>                 
>                 
>                 
>                     
>                         
>                             
>                                 
>                                     
>                                     
>                                     
>                                     
>                                 
>                                 
>                                     
>                                     
>                                     
>                                     
>                                 
>BorderThickness=“{TemplateBinding BorderThickness}”CornerRadius=“4”
>Grid.Column=“0”Grid.columnsspan=“4”Grid.Row=“1”Grid.RowSpan=“3”/
> 
>SnapsToDevicePixels=“{TemplateBinding SnapsToDevicePixels}”
>Grid.Column=“1”Grid.columnsspan=“2”Grid.Row=“2”/
> 
>                                 
>RecognizesAccessKey=“True”/>
>                                 
>                             
>                         
>                     
>                 
>             
然后将标题设置为包含按钮