2010-10-26 8 views
7

Ho notato che il margine o l'altezza del Separatore predefinito come è designato nei menu in WPF sembra essere leggermente più grande di altre applicazioni come Visual Studio 2010. So che questi Separatori possono essere ri-templati da applicare un nuovo stile con un ControlTemplate personalizzato ma, come sempre, sto cercando un modo per cambiarlo senza dover ridefinire manualmente la composizione del controllo.Un modo per rendere più stretto un Separatore all'interno di un menu WPF?

Se ciò che chiedo non è possibile, accetterò una risposta se qualcuno può fornire una spiegazione autorevole ed esauriente. Vorrei anche sottolineare che non sono interessato a una lezione su come ridefinire il ControlTemplate poiché sto trattandolo come ultima risorsa e sono già consapevole di come farlo.

+0

Hai mai scoperto come farlo? È anche noioso. –

+0

Non ancora, sarò sicuro di aggiornare il mio post se lo farò comunque. – jpierson

risposta

12

Lo stile per l'aero.normalcolor MenuItem separatore assomiglia a questo:

<Style x:Key="{x:Static MenuItem.SeparatorStyleKey}" 
     TargetType="{x:Type Separator}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Separator}"> 
       <Grid SnapsToDevicePixels="true" Margin="0,6,0,4"> 
        <Rectangle Height="1" 
           Margin="30,0,1,1" 
           Fill="#E0E0E0"/> 
        <Rectangle Height="1" 
           Margin="30,1,1,0" 
           Fill="White"/> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Si avrebbe bisogno di copiare questo stile al vostro App.xaml e cambiare il Margin="0,6,0,4" per soddisfare le vostre preferenze.

+0

Questa è probabilmente la soluzione più accettabile e il modo più standard per cambiare l'aspetto di qualsiasi controllo al di là di quali leve sono offerte attraverso le proprietà esposte, quindi lo accetto. Nel mio caso sto incorporando i controlli WPF in un'app WinForms tramite l'uso di ElementHost, quindi il concetto di app.xaml non si applica. Come un'altra nota, un modo che ho trovato intorno a questo senza modificare il modello di controllo sottostante è fondamentalmente impostare margini negativi sul controllo Separator stesso o attraverso uno stile. – jpierson

1

Uso sempre il margine negativo: <Separator Margin="0,-4" />.