У нас есть пользовательский холст, который имеет специализированные узлы, которые во многом похожи на окна стандартного MDI-приложения. Желаемое поведение состоит в том, что если какой-либо из дочерних элементов управления «окна» имеет фокус, то это «окно» называется активным.
Теперь свойство IsFocused, по-видимому, не каскадно, то есть если дочерний элемент управления имеет фокус, его контейнер также не настроен на «сфокусированный», поэтому мы не можем его использовать. По той же причине мы не можем установить свойство IsFocused для контейнера, так как я считаю, что это украдет его у дочернего элемента.
Моя единственная мысль - создать новый DP под названием HasChildWithFocus или что-то в этом роде, а затем в программном коде прослушать всплывающие события и установить этот флаг. Не уверен, что это лучший путь. (Мы можем реализовать это в виде комбинации прикрепленного свойства / прикрепленного поведения.)
Но, конечно, было бы намного лучше, если бы мы просто спросили у элемента управления: "Эй ... у вас или у кого-нибудь из ваших детей есть фокус?"
Так ты можешь?