将WPF控件的可见性与另一个控件的焦点属性绑定

5

我有一个下拉框,显示一系列项目,我想在旁边放一个按钮,点击该按钮会触发命令查看所选项目的详细信息。到目前为止,一切都很好。现在,我希望只有在下拉框具有焦点(或处于“编辑”模式时),才显示该按钮,而不仅仅是在弹出窗口打开时。

我认为我可以将按钮的可见性绑定到下拉框的某些焦点属性上,类似于这样:

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

但我找不到一种方法来知道我想要的控件是否有焦点。我查看了FocusManager.FocusedElement,但我不知道如何在绑定内获取我想要的有焦点的控件。在XAML中是否有实现这一需求的方法?


这个有帮助吗?WPF可编辑组合框IsFocused问题 - Panagiotis Kanavos
@PanagiotisKanavos 我尝试了这个,但它没有起作用:<Button Content="详细信息" Visibility="{Binding ElementName=elementListComboBox, Path=IsKeyBoardFocusWithin, Converter={dx:BooleanToVisibilityConverter}}"/> 不过还是谢谢你的建议。 - Hannish
1
@PanagiotisKanavos 抱歉!我刚刚意识到我在之前的评论中有一个错别字,你的建议是有效的。请将以下行作为答案发布,以便我批准它:<Button Content="详细信息" Visibility="{Binding ElementName=elementListComboBox, Path=IsKeyboardFocusWithin, Converter={dx:BooleanToVisibilityConverter}}"/> 谢谢! - Hannish
1个回答

12

好的,使它按照我想要的方式工作的方法是这样的:

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

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

希望这对您有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接