2011-12-15 14 views
10

Pracuję z XAML w Windows 8 Metro.Jak pozbyć się dodatkowej marży wokół przycisku?

Mam siatkę z wieloma wierszami. Pierwszy wiersz zawiera przycisk, a drugi obraz. Obraz ma pełne 600 jednostek szerokości, a przycisk ma zawartość obrazu. Problem polega na tym, że niezależnie od tego, jak styluję przycisk, jego lewy brzeg nie pasuje do lewej krawędzi obrazu. Podczas przełączania ustawień wygląda to tak, jakby przycisk zawierał dodatkowy margines poza obramowaniem, mimo że ustawiłem margines (i dopełnienie i grubość krawędzi) przycisku na 0.

Gdzie to jest granica pochodzi? Jak się go pozbyć? Próbowałem utworzyć niestandardowy styl z wartością Szablon (poniżej), ale ignoruje on moje inne ustawienia stylu. Nie mogłem znaleźć wiele przydatnych dokumentów na temat tego, jak zbudować szablon - lub nawet, jeśli to jest problem.

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

To wygląda na błąd. Przyciski z zawartością obrazu renderują dwa piksele na prawo od przycisków bez zawartości obrazu; jest to łatwiejsze do zobaczenia w pionowym panelu stosu. I może istnieć magia frakcyjno-pikselowa, która powoduje też łupanie fałszywych granic na hovernover. – AndrewS

Odpowiedz

15

To naprawdę denerwujące. Rozwiązanie to wydaje się działać dla mnie jest:

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

Sekret tkwi w ujemnej wartości marginesu.

+0

Cóż, wygląda na to, że działa, dzięki ... wartości marginesu ujemnego wydają mi się bardzo złe, ale cokolwiek działa! – AndrewS

+2

Czy istnieje lepsze rozwiązanie tego problemu? Obecnie używam tej metody, ale gdy rozdzielczość ekranu jest wyższa, przycisk wygląda brzydko, gdy przycisk "pasuje" w przestrzeni i ma ujemny margines. Wygląda na to, że ContentTemplates jest drogą do zrobienia, ale muszę jeszcze je rozgryźć. – Karl

Powiązane problemy