2011-12-15 111 views
10

我正在使用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> 
+0

这似乎是一个错误。带图像内容的按钮在没有图像内容的情况下在按钮的右侧呈现两个像素;这在垂直堆栈面板中更容易看到。而且可能会出现分数像素魔法,这也会导致人们在虚拟边界上出现虚假边界。 – AndrewS 2011-12-21 23:28:59

回答

15

这真的很烦人。这似乎为我工作的解决方案是:

<Button Background="Crimson" 
    HorizontalAlignment="Stretch" 
    VerticalAlignment="Stretch" 
    BorderThickness="0" 
    Margin="-3">Click me!</Button> 

秘诀在于保证金的负值。

+0

好吧,似乎工作,谢谢...负余量值似乎对我来说是非常错误的,但无论什么作品! – AndrewS 2012-02-15 18:03:00