2011-12-15 17 views
10

Sto lavorando con XAML in Windows 8 Metro.Come faccio a eliminare il margine extra attorno a un pulsante?

Ho una griglia con più righe. La prima riga contiene un pulsante e la seconda un'immagine. L'immagine ha una larghezza di 600 unità e il pulsante ha un contenuto immagine. Il problema è che, indipendentemente dal modo in cui modifico il pulsante, il suo bordo sinistro non corrisponde al bordo sinistro dell'immagine. Mentre curiosando con le impostazioni, sembra che il pulsante includa un margine extra all'esterno del bordo, anche se ho impostato il margine (e il padding e lo spessore del bordo) su 0.

Da dove viene questo viene il confine? Come faccio a liberarmene? Ho provato a creare uno stile personalizzato con un valore Template (sotto), ma ignora le mie altre impostazioni di stile. Non sono riuscito a trovare molta documentazione utile su come costruire il modello, o anche se questo è il problema.

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

Questo sembra essere un bug. I pulsanti con il contenuto dell'immagine rendono due pixel a destra dei pulsanti senza contenuto di immagine; questo è più facile da vedere in un pannello verticale. E potrebbe esserci una magia a pixel frazionari che sta causando falsi confini falsi anche sul hoverover. – AndrewS

risposta

15

È davvero fastidioso. La soluzione che sembra funzionare per me è:

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

Il segreto è nel valore negativo di margine.

+0

beh, sembra che funzioni, grazie ... i valori dei margini negativi mi sembrano molto sbagliati, ma qualunque cosa funzioni! – AndrewS

+2

C'è una soluzione migliore a questo? Attualmente sto utilizzando questo metodo, ma quando le risoluzioni dello schermo diventano più elevate, il pulsante appare sgradevole quando il pulsante si "adatta" nello spazio e ha un margine negativo. ContentTemplates sembra essere la strada da percorrere, ma devo ancora capirlo. – Karl

Problemi correlati