2010-10-26 66 views
7

我注意到,在WPF菜單中樣式的默認分隔符的邊距或高度似乎比其他一些應用程序(如Visual Studio 2010)稍大。我知道這些分隔符可以被重新模板化使用自定義ControlTemplate應用新樣式,但始終如一,我正在尋找任何可能的方式來更改此操作,而無需手動重新定義控件的組成。任何使WPF菜單中的分隔符更窄的方法?

如果我要求的是不可能的,我會接受一個答案,如果有人可以提供權威性和詳盡的解釋。另外我想強調的是,我對於如何重新定義ControlTemplate的演講並不感興趣,因爲我將其視爲最後的手段,並且我已經意識到如何實現這一點。

+0

你有沒有發現如何做到這一點?這也令我很煩惱。 – 2010-11-03 20:10:11

+0

還沒有,但是如果我這樣做的話,我一定會更新我的帖子。 – jpierson 2010-11-04 19:18:50

回答

12

爲aero.normalcolor風格菜單項分隔符是這樣的:

<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> 

你需要這種風格複製到您的App.xaml並更改Margin="0,6,0,4",以符合您的喜好。

+0

這可能是最可接受的解決方案,也是最標準的改變任何控制外觀的方法,超出了通過暴露屬性提供的槓桿,所以我接受它。在我的情況下,我通過使用ElementHost將WPF控件嵌入到WinForms應用程序中,因此app.xaml的概念不適用。同樣作爲另一個說明,我發現這種方法不需要修改底層控件模板,基本上是在分隔控件本身或通過樣式設置負邊距。 – jpierson 2012-12-05 06:52:54

1

我總是使用負邊距:<Separator Margin="0,-4" />