1

我想创建一个按钮模板,使我的按钮周围有不可点击的区域。当我按下该区域时,按钮单击事件应该是

这是我的尝试:

<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Button Content="Button"  HorizontalAlignment="Left" Margin="214,150,0,0" Name="button1" VerticalAlignment="Top"  Click="button1_Click">
            <Button.Template>
                <ControlTemplate TargetType="Button">
                    <Border Background="Pink" Padding="25">
                        <Button Content="{TemplateBinding Content}"></Button>
                    </Border>     
                </ControlTemplate>              
            </Button.Template>
        </Button>
    </Grid>
</Window>

当我在边界内按下时,该button1_Click方法被调用。但内部按钮动画未激活。

当我在边框区域内按下时,我希望内部按钮的行为就像被点击一样。

4

1 回答 1

3

有多种方法,例如将所有命令和事件路由到您的内部按钮,但这可能意味着背后的代码需要大量工作。“唯一的 xaml”解决方案是复制整个Button Template,并用类似这样的东西覆盖它

<ControlTemplate TargetType="Button">
    <Border Background="Transparent">
        <Border
            x:Name="Border"
            Margin="24"
            CornerRadius="2"
            BorderThickness="1"
            Background="{StaticResource NormalBrush}"
            BorderBrush="{StaticResource NormalBorderBrush}">
            <ContentPresenter
                Margin="2"
                HorizontalAlignment="Center"
                VerticalAlignment="Center"
                RecognizesAccessKey="True"/>
        </Border>
    </Border>
</ControlTemplate>

但是,当用于不同的主题时,这可能会看起来不合适。

于 2013-04-10T14:17:55.753 回答