WPF 设计器无法应用样式



在 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 类的构造函数时遇到问题。当注释掉该行时,错误消失,但随后不应用样式,反之亦然。

this.Style = FindResource("MenuButton") as Style;不应该出现在构造函数中。

您可以在 OnApplyTemplate 方法中应用它

public overrride OnApplyTemplate()
{
     this.Style = FindResource("MenuButton") as Style;
     base.OnApplyTemplate(); 
}

希望这有帮助

相关内容

  • 没有找到相关文章

最新更新