WPF将控件可见性绑定到另一个控件的focus属性

Han*_*ish 4 wpf xaml binding controls

我有一个显示项目列表的组合框,我想在它旁边放一个按钮,触发命令查看所选项目的详细信息.到现在为止还挺好.现在我希望只有在组合框具有焦点(或处于"编辑"模式,但不仅仅是弹出窗口打开时)时按钮才可见.

我以为我可以将按钮的可见性绑定到组合框的某些焦点属性,如下所示:

<Button Content="Details" Visibility="{Binding ElementName=elementListComboBox,
Path=IsFocused, Converter={StaticResource Bool2VisibilityConverter}}"/>
Run Code Online (Sandbox Code Playgroud)

但我发现无法知道我想要的控制是否有重点.我查看了FocusManager.FocusedElement,但我不知道如何在绑定中获得我想要的聚焦控件.有没有办法在XAML中实现这一目标?

Han*_*ish 7

好吧,让我按照自己的意愿工作的方法是这样的:

 <Button Command="{Binding SomeCommand}"
         Content="Details" 
         Focusable="False"
         Visibility="{Binding ElementName=elementListComboBox, 
                      Path=IsKeyboardFocusWithin, 
                      Converter={StaticResource Bool2VisibilityConverter}}"/>
Run Code Online (Sandbox Code Playgroud)

这里有两个关键因素:将按钮的可见性绑定到组合框的IsKeyboardFocusWithin属性,并将按钮的Focusable属性设置为false,否则当您想要单击它时它将折叠.

希望这很有用.