并非所有内容都可以从按钮派生的自定义控件上单击

时间:2012-10-07 22:10:16

标签: wpf xaml controltemplate

我有一个“立方体”(Dice)控件,它来自Button

立方体:

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>

它的样子:

enter image description here

黄色标记显示它只能在内容后面点击,只有当你真正针对按钮被“隐藏”的点击时才会点击..

为什么会发生这种情况?

2 个答案:

答案 0 :(得分:6)

如果没有Background鼠标,则不会捕获事件。为您的外部Border提供透明的Color

<ControlTemplate TargetType="{x:Type local:Cube}" x:Key="CubeControlTemplate">
    <Border Background="Transparent">                
        .......
    </Border> 
</ControlTemplate>

答案 1 :(得分:0)

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

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

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

http://snoopwpf.codeplex.com/