如何摆脱Button周围的额外余量?

And*_*ewS 10 xaml microsoft-metro

我在Windows 8 Metro中使用XAML.

我有一个多行的网格.第一行包含一个按钮,第二行包含一个图像.图像宽度为600单位,按钮具有图像内容.问题是,无论我如何设置按钮的样式,其左边缘都与图像的左边缘不匹配.在使用设置进行调整时,看起来按钮在边框外部包含额外的边距,即使我已将按钮的边距(以及填充和边框粗细)设置为0.

这个边界来自哪里?我怎么摆脱它?我尝试使用模板值(下面)创建自定义样式,但它忽略了我的其他样式设置.我找不到有关如何构建模板的有用文档 - 或者即使这是问题.

<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="Button">
            <Grid>
                <ContentPresenter Content="{TemplateBinding Content}" Margin="0" />
            </Grid>
        </ControlTemplate>
    </Setter.Value>
</Setter>
Run Code Online (Sandbox Code Playgroud)

kie*_*wic 15

这真的很烦人.似乎对我有用的解决方案是:

<Button Background="Crimson" 
    HorizontalAlignment="Stretch" 
    VerticalAlignment="Stretch" 
    BorderThickness="0" 
    Margin="-3">Click me!</Button>
Run Code Online (Sandbox Code Playgroud)

秘密在于保证金的负值.

  • 有更好的解决方案吗?我目前不得不使用这种方法,但随着屏幕分辨率越来越高,一旦按钮在空间中"适合"并且具有负边距,按钮看起来不美观.ContentTemplates似乎是要走的路,但我还没有想出来. (2认同)