2011-03-14 142 views
0

我宣佈我的控制style庫:如何覆蓋全局風格的ContextMenu?

<ContentControl.Resources> 
    <ContextMenu x:Key="ContextMenu"> 
     <MenuItem Header="{x:Static Drawing:Headers.AddEdge}" Click="AddEdgeClick"/> 
     <MenuItem Header="{x:Static Drawing:Headers.ChangeID}" Click="ChangeIDClick"/> 
     <MenuItem Header="{x:Static Drawing:Headers.Remove}" Click="RemoveClick"/> 
    </ContextMenu> 
    <Style x:Key="Style" TargetType="{x:Type Drawing:Node}"> 
     <Setter Property="ContextMenu" Value="{StaticResource ContextMenu}"/> 
    </Style> 
</ContentControl.Resources> 

<ContentControl.Style> 
    <StaticResource ResourceKey="Style"/> 
</ContentControl.Style> 

但對於這種控制在應用程序不工作全局樣式...

<Style TargetType="Drawing:Node"> 
    <Setter Property="ContextMenu" Value="{x:Null}"/> 
    <EventSetter Event="MouseLeftButtonUp" Handler="DirectoryClicked"/> 
</Style> 

回答

0

如果您明確設置Style屬性上元素,那麼任何隱式樣式(即您的全局樣式)將不會被應用。如果你的全局風格實際上是默認的風格,那麼它仍然應用,但它聽起來不像你在做什麼。

您可以在隱式底座您明確風格雖然,像這樣:

<Style x:Key="Style" TargetType="{x:Type Drawing:Node}" BasedOn="{StaticResource {x:Type Drawing:Node}}"> 
    <Setter Property="ContextMenu" Value="{StaticResource ContextMenu}"/> 
</Style> 

當然這是假設製圖:節點是同一類/類型GraphNode:節點。

+0

哦,對不起。我在控制庫中使用第一個樣本,但第二個樣本在應用程序中使用。 – 2011-03-14 04:16:57