WPF привязывает видимость управления к сфокусированному свойству другого элемента управления

У меня есть combobox, который отображает список элементов, и я хочу поместить рядом с ним кнопку, которая запускает команду для просмотра деталей выбранного элемента. Все идет нормально. Теперь я хочу, чтобы кнопка была видна только в том случае, если в поле со списком выделено фокус (или находится в режиме «редактирования», но не только при открытии всплывающего окна).

Я думал, что могу привязать видимость кнопки к некоторому свойству focus combobox, что-то вроде этого:

<button Content="Details" Visibility="{Binding ElementName=elementListComboBox,
Path=IsFocused, Converter={StaticResource Bool2VisibilityConverter}}"/>

Но я не нашел способа узнать, сосредоточен ли контроль, который я хочу, или нет. Я посмотрел на FocusManager.FocusedElement, но я не знаю, как получить сосредоточенный контроль, который я хочу в привязке. Есть ли способ добиться этого в XAML?

4
nl ja de
Помогает ли это? Задача wpf Editable Combobox IsFocused
добавлено автор Panagiotis Kanavos, источник
@PanagiotisKanavos Я пробовал это, но он не работает: <button Content = "Details" Visibility = "{Binding ElementName = elementListComboBox, Path = IsKeyBoardFocusWithin, Converter = {dx: BooleanToVisibilityConverter}}" /> Спасибо за ввод.
добавлено автор Hannish, источник
@PanagiotisKanavos извините, человек! Я только что понял, что у меня есть опечатка в моем предыдущем комментарии, ваше предложение работает. Отправьте следующую строку и ответьте, чтобы я мог ее утвердить: <button Content = "Details" Visibility = "{Binding ElementName = elementListComboBox, Path = IsKeyboardFocusWithin, Converter = {dx: BooleanToVisibilityConverter}}" /> Спасибо!
добавлено автор Hannish, источник

1 ответы

Хорошо, способ получить эту работу, как я хотел, это:

 <button Command="{Binding SomeCommand}"
         Content="Details" 
         Focusable="False"
         Visibility="{Binding ElementName=elementListComboBox, 
                      Path=IsKeyboardFocusWithin, 
                      Converter={StaticResource Bool2VisibilityConverter}}"/>

Здесь присутствуют два ключевых фактора: привязать видимость кнопки к свойству IsKeyboardFocusWithin в поле со списком и установить значение свойства Focusable на false, иначе оно будет свернуто, если вы хотите щелкнуть по нему.

Надеюсь, это полезно.

7
добавлено