2011-03-14 2 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> 

Это, конечно, если предположить, что Drawing: Узел тот же класс/тип, как GraphNode: Node.

+0

О, извините. Я использую первый образец в библиотеке управления, но второй пример используется в приложении. –

Смежные вопросы