2011-08-31 76 views
2

在我的應用程序中,我有一堆ContextMenus,我希望它們都具有相同的外觀,這是非常基本的,但它使用資源來設置HighlightBrushKey和ControlBrushKey,它們是systemColors中。它看起來像這樣:設置SystemColors覆蓋隱式樣式

<ContextMenu Padding="0" Background="Transparent"> 
    <ContextMenu.Resources> 
     <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/> 
     <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent"/> 
    </ContextMenu.Resources> 
    <MenuItem Header="Delete"/> 
    <MenuItem Header="Modify"/> 
</ContextMenu> 

沒什麼特別的在這裏,但我不能找到一種方法,把它放在一個風格,我想要做的是沿着線的東西:

<Style TargetType="ContextMenu"> 
    <Setter Property="Padding" Value="0" /> 
    <Setter Property="Background" Value="Transparent" /> 
    <Setter Property="Resources"> 
     <Setter.Value> 
      <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" /> 
      <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" /> 
     </Setter.Value> 
    </Setter> 
</Style> 

你如何將資源放入風格? (如果可以的話......)

謝謝!

回答

3

您不能通過setter設置Resources,因爲它不是依賴項屬性。將相關資源添加到Style.Resources或覆蓋Template並在那裏添加資源。雖然範圍可能有限。


<Style TargetType="ContextMenu"> 
    <Style.Resources> 
     <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" /> 
     <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" /> 
    </Style.Resources> 
    <Setter Property="Padding" Value="0" /> 
    <Setter Property="Background" Value="Transparent" /> 
</Style> 
+0

這是卓有成效的,我這個時候,我不知道我是否有目標控制設置,雖然資源將如何表現。 –