WPF является большим, потому что существует много способов достигнуть Ваших целей. Например, от того, что я понимаю, adorners может добавить некоторые средства управления к элементу UI, но я думаю, что то же поведение может быть достигнуто через пользовательский элемент управления, который содержит дополнительный элемент.
Так, мой вопрос: когда я должен предпочесть adorners более сложному (но я думаю, более гибкий), пользовательский элемент управления? Полагайте, что я экстенсивно использую шаблон MVVM, и я хотел бы связать команды с дополнительным элементом.
В частности, я разрабатываю приложение разработчика схемы, и я хотел бы добавить точки подключения к своим формам. Другим примером, где я должен решить между пользовательским элементом управления и adorner, является строка, которая показывает маркировку, автоматически расположенную для "следования" за строкой.
Спасибо
Декораторы требуют немного больше работы, чем использование ControlTemplates для большинства целей. Если вам нужна дополнительная функциональность, которую предоставляют украшения, используйте их. В противном случае используйте ControlTemplates.
Вот основные особенности, которые добавляют украшения в таблицу:
Вот некоторые из потенциальных затрат, связанных с использованием декоративных элементов в отличие от ControlTemplates:
.GetAdornerLayer ()
и .Add ()
и для управления сроком службы Adorner Control
в качестве дочернего элемента Adorner, чтобы вы могли использовать с ним ControlTemplate RoutedEvents
в AdornedElement, если вы хотите, чтобы они обрабатывались целевой элемент управления DataContext = "{Binding AdornedElement.DataContext} "
, если вы хотите передать DataContext через В В ваших конкретных примерах нет четких правильных ответов.
Я бы склонился к использованию ControlTemplate для точек подключения, поскольку вам, вероятно, понадобится способ указать расположение точек подключения, а ControlTemplate уже определяет макет самого элемента. С другой стороны, если информация о точке подключения управляется данными и отображается только на активном элементе управления (или элементе управления, который перетаскивается), может быть лучше использовать украшения для получения объявления о производительности. преимущества и упрощение отдельных шаблонов ControlTemplates.
Автоматически позиционируемая этикетка может хорошо подходить для украшения с точки зрения расчета меры / размещения, если линии не являются простыми прямыми линиями, но если у вас потенциально будет десять тысяч таких видимых одновременно, я был бы обеспокоен производительностью.
Не зная больше о вашем приложении, трудно сказать больше, чем это.