WPF: определение шаблона управления программно - PullRequest
1 голос
/ 03 августа 2011

Мы можем сделать WPF Custom Control для переопределения внешнего вида некоторых элементов управления, таких как кнопка со значком.

public class MyButton : Button {

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

Но я думаю, что у этого пути есть некоторая проблема. Это вызывает некоторую проблему, когда я распространяю Custom Cotrol 'MyButton'. Поскольку MyButton зависит от внешнего ресурса, стиль WPF MyButton. Поэтому мне нужно распространять два файла: MyButton.cs и MyButton.WPF.

Итак, как определить шаблон Conotrol программным способом?

(Разумеется, еще один способ решения этой проблемы - создание пользовательского контроля WPF. Но я не об этом.)

Примечание: я нашел некоторые ресурсы по этой проблеме. Это был встроенный сценарий XAML. Но для меня сценарии XAML не вариант. Потому что я учусь на WPF, поэтому хочу знать сам WPF, а не трюк.

1 Ответ

2 голосов
/ 03 августа 2011

Вы не распространяете код, вы распространяете dll, которая содержит класс и generic.xaml

Таким образом, другой дизайнер / разработчик может «переопределить» шаблон, и ваш шаблон останется безопасным резервом.

EDIT

Определение шаблона в коде - это не весело (много кода, его сложно отладить, сложно поддерживать), но это можно сделать:

var template = new ControlTemplate(typeof(MyControl));

EDIT2

Другой способ - указать шаблон в длинной строке и использовать синтаксический анализатор XAML для его загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...