Нужно ли создавать пользовательский элемент управления как безликий? - PullRequest
1 голос
/ 19 августа 2010

Я создаю пользовательский элемент управления, полученный из одного из стандартных элементов управления WPF. Элемент управления имеет несколько составных частей, и я изменяю только одну из этих частей.

Вот мой вопрос: если я изменяю только одну часть элемента управления, должен ли я объявить элемент управления без просмотра и воспроизвести весь шаблон элемента управления для измененного элемента управления в Generic.xaml, или я могу опустить объявление без проверки ( найти в статическом конструкторе, предоставленном Visual Studio) и просто изменить шаблон элемента управления для части, которую я расширяю?

Я попробовал последний подход, и мой шаблон управления игнорируется. Я хотел бы получить подтверждение до того, как воспроизведу весь шаблон элемента управления, поскольку я расширяю календарь WPF. Спасибо за вашу помощь.

Ответы [ 2 ]

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

Объявление, сгенерированное для вас по умолчанию, просто позволяет определить неявный стиль по умолчанию для вашего элемента управления вместо того, чтобы просто использовать стиль по умолчанию базового типа.

DefaultStyleKeyProperty.OverrideMetadata(typeof(MyControl), new FrameworkPropertyMetadata(typeof(MyControl)));

То, что делает элемент управления не выглядящим, это не какое-то конкретное объявление, а его определение в файле кода, к которому затем будет применен некоторый ControlTemplate во время выполнения. Альтернативой является стиль UserControl объявления класса кода XAML +, который компилируется в единый класс с пользовательским интерфейсом и логикой.

Простой пример: кнопка - это не то, что вы видите на экране, а нажатие; Кнопка - это элемент управления, который может взять один фрагмент контента и преобразовать щелчок пользователя в событие Click или командный вызов. То, что вы видите на экране, это просто визуальный шаблон поверх неотъемлемого поведения и состояния Баттона.

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

Похоже, вам лучше всего вставить весь шаблон и изменить нужные вам части, хотя вы не сказали точно, что вы хотите сделать, или опубликовали какой-либо код.

Очевидно, что если то, что вы хотите изменить в календаре, имеет свойство, которое вы можете изменить в xaml, то это проще.Противоположной крайностью было бы создание собственного элемента управления (подкласса).

Я хотел изменить цвет или стрелку ComboBox на днях, и самый простой способ сделать это - вставить весь шаблон в стильприменять по мере необходимости, после изменения одной части шаблона (цвет стрелки, конечно).Для этого не нужно менять DP, и мне не нужно ничего более сложного, чем это.

HTH,
Berryl

...