1

iv'e 有一个派生自 Button 的“Cube”(骰子)控件

立方体:

public class Cube : Button
{        
    public Cube()
    {
        DefaultStyleKeyProperty.OverrideMetadata(typeof(Cube), new FrameworkPropertyMetadata(typeof(Cube)));                                
    }
    ...... // Stuff
}

模板(一般):

<ControlTemplate TargetType="{x:Type local:Cube}" x:Key="CubeControlTemplate">
         <Border>                
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="40"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>

                    <Border>
                        <Grid>
                            .......
                        </Grid>                          
                    </Border>

                    <Border Grid.Column="2">
                        <Grid>
                            .......
                        </Grid>                          
                    </Border>    
              <Grid> 
        </Border> 
</ControlTemplate>

它看起来像什么:

在此处输入图像描述

黄色标记表明它只能在 Content 后面点击,只有当您真正将点击目标定位在 Button 为“隐藏”的位置时..

任何想法为什么会发生这种情况?

4

2 回答 2

6

没有Background鼠标事件将不会被捕获。给你的外层Border透明Color

<ControlTemplate TargetType="{x:Type local:Cube}" x:Key="CubeControlTemplate">
    <Border Background="Transparent">                
        .......
    </Border> 
</ControlTemplate>
于 2012-10-07T22:37:29.073 回答
0

请检查您是否尝试单击具有 Null 背景的元素。命中测试需要Brush设置 a。

如果您Border或您Grid的背景为空,请尝试将其设置为透明。

如果您仍然遇到问题,请尝试使用 Snoop 进行调试。

http://snoopwpf.codeplex.com/

于 2012-10-07T22:37:55.740 回答