2011-12-15 7 views
10

私はWindows 8 MetroのXAMLで作業しています。ボタンの余白を取り除くにはどうすればよいですか?

私は複数の行を持つグリッドを持っています。最初の行にはボタンが含まれ、2番目の行には画像があります。画像は全部で600ユニット幅で、ボタンには画像の内容があります。問題は、どのようにボタンのスタイルを設定しても、その左端が画像の左端と一致しないことです。この設定では、ボタンの余白(およびパディング、境界線の太さ)を0に設定しても、ボタンの外枠に余白が含まれているように見えます。

ボーダーはどこから来たの?どのように私はそれを取り除くのですか?私はテンプレート値(下記)でカスタムスタイルを作成しようとしましたが、他のスタイル設定は無視されます。テンプレートを構築する方法や、それが問題であっても、私は有用な文書を見つけることができませんでした。

<Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="Button"> 
      <Grid> 
       <ContentPresenter Content="{TemplateBinding Content}" Margin="0" /> 
      </Grid> 
     </ControlTemplate> 
    </Setter.Value> 
</Setter> 
+0

これはバグのようです。画像コンテンツを含むボタンは、画像コンテンツなしでボタンの右側に2ピクセルをレンダリングします。これは垂直スタックパネルで見るのが容易です。また、ホバーオーバで淡い偽の境界を引き起こす小数画素の魔法もあるかもしれません。 – AndrewS

答えて

15

本当に迷惑です。私のために働くように思われる解決策は以下のとおりです。

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

秘密はマージンの負の値です。

+0

うまく動作するように見えます、ありがとう...負のマージンの値は私には間違っているようですが、何が効いています! – AndrewS

+2

もっと良い解決策がありますか?私は現在、このメソッドを使用する必要がありますが、画面解像度が高くなるにつれて、ボタンがスペースに「フィット」し、マイナスのマージンを持つと、ボタンが見苦しく見えます。 ContentTemplatesは行く方法のようですが、私はまだそれらを理解する必要があります。 – Karl

関連する問題