スキニングを含むいくつかの機能を備えたWPF Menu
/クラスを拡張する DLL ライブラリを開発しています。MenuItem
このライブラリには次のクラスがあります。
public class MyMenu : Menu {...}
public class MyMenuItem : MenuItem {...}
各クラスには静的コンストラクターがあり、DefaultStyleKey
それをオーバーライドして、Generic.xaml で定義された既定のスタイルMyMenu
を使用します。MyMenuItem
<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 を介して様式化された派生メニューを実現する方法は?