如何摆脱ControlTemplate上按钮XAML的额外空间

时间:2015-07-07 07:41:43

标签: c# xaml button controltemplate blend

我正在使用Blend for Visual Studio 2013创建一个自定义按钮。正如您从图像中看到的那样,按钮的左右两侧有一个额外的空间,我无法摆脱它。这源于ControlTemplate标记。 enter image description here

模板内部控件的宽度(如Grid,BottomRect,TopRect,ContentPresenter等)可以毫无问题地进行调整。拖动ControlTemplate的蓝色矩形不起作用。

我假设我需要以某种方式覆盖ControlTemplate的默认Width属性,但它是如何做到的?感谢。

1 个答案:

答案 0 :(得分:0)

删除网格边距

....
<ControlTemplate TargetType="Button">
    <Grid x:Name="grid" Margin="0" ...
    ...

EDITED

好的,那么你可以使用TemplateBinding

<Style x:Key="ButtonGameStyle" TargetType="Button">
    <Setter Property="Width" Value="42" />
    <Setter Property="Height" Value="42" />
    <Setter Property="Margin" Value="0" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate>
                <Grid x:Name="grid" Margin="{TemplateBinding Margin}" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}">
                    ...
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

然后您可以在按钮中设置宽度,高度和边距

<Button Style="{StaticResource ButtonGameStyle}" Width="20" Height="20" />