У меня возникли проблемы с созданием универсального решения для следующей проблемы:
Представьте себе пользовательский элемент управления TreeView с тематикой pws — список элементов в отдельном файле xaml, который используется для построения визуальной структуры элемента управления TreeView. Существует элемент границы, который я хотел бы нарисовать на его фоне в зависимости от типа отображаемых данных. Этот элемент границы является частью знака «+» и не отображается через стиль.
Я могу сделать это, используя код позади и подписавшись на некоторые события, которые предоставляет этот элемент управления, а затем найти эту границу в дочерних элементах и изменить ее фон. Однако этот код будет повторяться во многих представлениях, иногда точно так же, иногда с небольшими изменениями (например, проверяется тип только другого элемента данных).
Есть ли способ сделать это, используя любую другую технику? Кажется, здесь можно использовать селекторы стилей, так как визуальная структура не строится в этом месте, поэтому я не могу искать этот элемент по его имени. И этот элемент не выставляется через какое-либо свойство элемента управления.
Редактировать:
в настоящее время у меня есть элемент управления oqwn, который наследует этот элемент управления, если вы обнаружите, что это можно сделать с помощью свойств прикрепленных/зависимых:
public class MyTreeView : CustomTreeView
{
}
Если бы мне нужно было указать фон для строки, я бы создал селектор стиля:
<local:ProductRowtyleSelector x:Key="productRowStyleSelector"
DefaultStyle="{StaticResource defaultProductRowStyle}"
GoodStyle="{StaticResource goodProductRowStyle}"
ScrapStyle="{StaticResource reworkProductRowStyle}" />
Где GoodStyle наследует стиль для строки, которая существует в шаблоне элемента управления. Таким образом, я бы использовал выбор стиля везде, где я отображаю список продуктов.
Есть ли аналогичный способ сделать то же самое для элемента Border, который я добавил в шаблон управления?