Я разрабатываю библиотеку DLL, которая расширяет классы WPF Menu
/ MenuItem
с некоторыми функциями, включая скины.Эта библиотека имеет следующие классы:
public class MyMenu : Menu {...}
public class MyMenuItem : MenuItem {...}
Каждый класс имеет статический конструктор для переопределения DefaultStyleKey
, поэтому MyMenu
и MyMenuItem
используют стили по умолчанию, определенные в Generic.xaml:
<Style TargetType="{x:Type local:MyMenu}">...
<Style TargetType="{x:Type local:MyMenuItem}">...
Все отлично работает.Но мне также нужно реализовать собственное меню Separator
, которое должно быть шаблонизировано через Generic.xaml.Итак, у меня есть другой класс:
public class MySeparator : Separator {...}
Я пытался использовать подход, описанный в MSDN: http://msdn.microsoft.com/en-us/library/system.windows.controls.menuitem.separatorstylekey(VS.85).aspx
Таким образом (Generic.xaml):
<Style x:Key="{x:Static local:MyMenuItem.SeparatorStyleKey}" TargetType="{x:Type local:MySeparator}">
<Setter Property="OverridesDefaultStyle" Value="true"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:MySeparator}">
...
</ControlTemplate>
</Setter.Value>
<Setter/>
</Style>
Но этоне работает.В моем целевом приложении я использую классы библиотеки DLL следующим образом (MainWindow.xaml):
<lib:MyMenu>
<lib:MyMenuItem Header="Item 1"/>
<lib:MySeparator/>
<lib:MyMenuItem Header="Item 2"/>
</lib:MyMenu>
Итак, мой вопрос: как реализовать производное меню Separator
, стилизованное через Generic.xaml?