在 Wpf 中,我从 Button 类继承:
public class MenuButton : Button
{
public MenuButton()
{
this.Style = FindResource("MenuButton") as Style;
}
public MenuButton(string caption, ICommand command)
: this()
{
SetValue(ContentProperty, caption);
this.command = command;
}
}
在一个窗口中,我添加了一个控件
<c:MenuButtons x:Name="MenuProject" c:MenuItems="{x:Static d:MenuItems.Project}" />
其中 c: en d: 是我的命名空间。
MenuItems
是 usercontrol 的依赖MenuButtons
属性,并在如下类中声明:
public readonly static MenuButton[] Project = new MenuButton[] { new MenuButton("Open", new Command()), ..etc };
资源定义如下:
<Style x:Key="MenuButton"
BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"
TargetType="{x:Type c:MenuButton}">
Visual Studio 设计师说:“MenuButton”TargetType 与元素“MenuButton”的类型不匹配。代码运行良好,但设计者在调用我的 MenuButton 类的构造函数时遇到了麻烦。注释掉该行时,错误消失,但样式未应用,反之亦然。