В МОФ я наследовать от класса Button:Wpf дизайнер не может применить стиль
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}" />
где с: ен д: мои пространств имен. MenuItems
является DependencyProperty из 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}">
Визуальная студия дизайнер говорит: TargetType 'кнопку MENU' не тип соответствия элемента «MenuButton». Код работает нормально, но конструктору не удается вызвать конструктор моего класса MenuButton. При комментировании этой строки ошибка исчезает, но тогда стиль не применяется и наоборот.
Не уверено, что если он релевантен, но 'this.Style = FindResource («кнопка MENU»), как стиль,' не должен быть в конструкторе. вы можете переопределить метод OnApplyTemplate() и применить его там. –
Это помогает! Эффект заключается в том, что стиль применяется во время выполнения не во время разработки, по крайней мере, нет ошибки. Почему стиль не разрешен в конструкторе? – Gerard
Проверьте ответ Джона на мой [вопрос] (http://stackoverflow.com/questions/19363082/why-does-resources-cannot-be-fetched-in-a-controls-constructor). –