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

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

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

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

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

4 голоса | спросил Hannish 28 FriEurope/Moscow2012-12-28T15:09:05+04:00Europe/Moscow12bEurope/MoscowFri, 28 Dec 2012 15:09:05 +0400 2012, 15:09:05

1 ответ


0

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

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

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

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

ответил Hannish 29 SatEurope/Moscow2012-12-29T15:38:31+04:00Europe/Moscow12bEurope/MoscowSat, 29 Dec 2012 15:38:31 +0400 2012, 15:38:31

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132