Как я могу стилизовать настраиваемый элемент управления в зависимости от того, находится ли какой-либо из его дочерних элементов в фокусе?

У нас есть настраиваемый холст, который имеет специализированные узлы, которые ведут себя во многом как окна стандартного приложения MDI. Желаемое поведение состоит в том, что если какой-либо из дочерних элементов управления «окна» имеет фокус, то это «окно» считается активным.

Теперь свойство IsFocused не кажется каскадным, то есть если дочерний элемент управления имеет фокус, его контейнер также не настроен на «сфокусированный», поэтому мы не можем его использовать. По той же причине мы можем ' t установить свойство IsFocused в контейнере, поскольку я считаю, что это украдет его у дочернего элемента.

Моя единственная мысль - создать новый DP с именем HasChildWithFocus или что-то в этом роде, а затем в коде программной части прослушивать всплывающие события и установите этот флаг. Не уверен, что это лучший способ. (Мы можем реализовать это как нечто вроде комбинации присоединенного свойства / присоединенного поведения.)

Но, конечно, было бы намного лучше, если бы мы могли просто спросить элемент управления: «Эй ... у вас или у кого-либо из ваших детей есть фокус? ? '

Так можно?

8
задан MarqueIV 10 February 2011 в 05:31
поделиться