WPF Lookless элемент управления не отображается в дизайнере VS - PullRequest
0 голосов
/ 18 августа 2010

У меня есть встроенный элемент управления без внешнего вида, стиль которого по умолчанию определен в generic.xaml в моей папке Темы.У меня также есть следующее в конструкторе:

 static MyControl()
 {
     DefaultStyleKeyProperty.OverrideMetadata(typeof(MyControl), new FrameworkPropertyMetadata(typeof(MyControl)));
 }

 public MyControl()
 {
     //DoSomeWork
 }

Есть ли что-то еще, что я должен установить на земле WPF?В Silverlight все, что мне нужно сделать, это:

DefaultStyleKey = typeof(MyControl);

ПРИМЕЧАНИЕ. Хотя он действительно отображается в Expression Blend.

Ответы [ 3 ]

1 голос
/ 18 августа 2010

Это конструктор статический? если нет, то должно быть. Для правильной работы вызов OverrideMetadata должен находиться в статическом конструкторе. измените или добавьте ваш конструктор так:

static MyControl()
 {
     DefaultStyleKeyProperty.OverrideMetadata(typeof(MyControl), new FrameworkPropertyMetadata(typeof(MyControl)));
 }
0 голосов
/ 29 марта 2011

Вы добавили этот атрибут в свою сборку:

[assembly: ThemeInfo(
    ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
    //(used if a resource is not found in the page, 
    // or application resource dictionaries)
    ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
    //(used if a resource is not found in the page, 
    // app, or any theme specific resource dictionaries))]

Обычно это помещается в файл AssemblyInfo.cs. Он сообщает WPF, где искать ваш файл generic.xaml.

0 голосов
/ 18 августа 2010

Сбой вашего дизайнера VS или ничего, кроме простой границы, похожей на внешний вид.

Я бы предложил. У вас есть отдельный стиль для управления, относительно легкий вес. Примените этот стиль из конструктора элемента управления, проверив, является ли IsInDesignTime.

If, ваш дизайнер вылетает или выдает ошибку. Затем вы должны попробовать отладку по времени разработки.

Кроме того, в некоторых случаях. Если тип приложения ".NetFramework 4 Client Profile" [который является типом приложения wpf по умолчанию в VS2010], вы можете получить некоторые проводные вещи, подобные этой.

НТН

...