我开发了一个扩展WPF Menu
/ MenuItem
类的DLL库,其中包含一些包括外观在内的功能。该库包含以下类:
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>
所以我的问题是:如何通过Generic.xaml实现风格化的派生菜单Separator
?
答案 0 :(得分:2)
您不应该需要Separator
的新子类,您也可以通过在菜单Separators
中嵌入Style
来设置菜单中显示的Style
的样式。 s Resources
。