Кнопка с пользовательским ControlTemplate иногда пропускает щелчки - PullRequest
0 голосов
/ 18 января 2012

Мой Button с пользовательским ControlTemplate не отвечает на каждый клик. Я понятия не имею, почему, так как это совершенно случайно, если щелчок работает или нет.

ControlTemplate:

<ControlTemplate x:Key="KreisPlus">
    <Path Data="M74,37.5 C74,57.658393 57.658393,74 37.5,74 C17.341607,74 1,57.658393 1,37.5 C1,17.341607
            17.341607,1 37.5,1 C57.658393,1 74,17.341607 74,37.5 z M32.113861,13.5 L43.386139,13.5 43.386139,
            32.613861 62.5,32.613861 62.5,43.886139 43.386139,43.886139 43.386139,63 32.113861,63 32.113861,
            43.886139 13,43.886139 13,32.613861 32.113861,32.613861 z"
            Height="20" Stretch="Fill" Stroke="#FFD7D7D7" Width="20">
        <Path.Fill>
            <RadialGradientBrush>
                <GradientStop Color="#FF1F71D5" />
                <GradientStop Color="White" Offset="0.94" />
                <GradientStop Color="#FF6499E0" Offset="0.78" />
            </RadialGradientBrush>
        </Path.Fill>
    </Path>
</ControlTemplate>

<Button Click="Button_Click" Template="{StaticResource ResourceKey=KreisPlus}" />

1 Ответ

2 голосов
/ 18 января 2012

просто попробуйте этот пример кода и посмотрите, что вы ожидаете?

        <ControlTemplate x:Key="KreisPlus" TargetType="{x:Type Button}">

        <Grid HorizontalAlignment="Stretch"
              VerticalAlignment="Stretch"
              Background="Transparent" >
        <Path Data="M74,37.5 C74,57.658393 57.658393,74 37.5,74 C17.341607,74 1,57.658393 1,37.5 C1,17.341607 17.341607,1 37.5,1 C57.658393,1 74,17.341607 74,37.5 z M32.113861,13.5 L43.386139,13.5 43.386139,32.613861 62.5,32.613861 62.5,43.886139 43.386139,43.886139 43.386139,63 32.113861,63 32.113861,43.886139 13,43.886139 13,32.613861 32.113861,32.613861 z"
              Height="20"
              Stretch="Fill"
              Stroke="#FFD7D7D7"

              Width="20">
            <Path.Fill>
                <RadialGradientBrush>
                    <GradientStop Color="#FF1F71D5" />
                    <GradientStop Color="White"
                                  Offset="0.94" />
                    <GradientStop Color="#FF6499E0"
                                  Offset="0.78" />
                </RadialGradientBrush>
            </Path.Fill>
        </Path>
        </Grid>
    </ControlTemplate>

Теперь путь находится внутри таблицы и может реагировать на щелчок.Это займет всю площадь и только путь в центре.Таким образом, если вы нажмете на кнопку в любом месте, даже внешний путь будет выполнять щелчок.Если вы этого не хотите и хотите, чтобы траектория реагировала на щелчок, просто измените горизонтальное и вертикальное выравнивание по центру

HorizontalAlignment="Center"
VerticalAlignment="Center"
...