如何为WPF应用中所有控件设置不可聚焦(Focusable="false")?
通用解决方案:给FrameworkElement创建全局样式
当然有更简便优雅的实现方式!你完全不用为每种控件单独编写样式——因为WPF里绝大多数控件都继承自FrameworkElement,而Focusable正是这个基类的属性,我们可以直接给它设置全局样式,一次性覆盖所有派生控件。
实现代码
把这段样式添加到你的App.xaml(全局生效)或者目标Window的Resources中即可:
<Style TargetType="FrameworkElement"> <Setter Property="Focusable" Value="False" /> </Style>
效果说明
这个样式会自动应用到所有继承自FrameworkElement的控件上,比如Button、TextBox、CheckBox、ListBox等等,彻底省去逐个控件配置的麻烦。
例外情况处理
如果有个别控件需要保留获得焦点的能力,你只需要在该控件的本地属性中显式设置Focusable="True"即可——因为WPF的属性优先级是本地属性 > 全局样式,这样就能轻松覆盖全局设置:
<Button Focusable="True" Content="允许获得焦点的特殊按钮" />
或者你也可以给特定控件编写更具体的样式,同样能覆盖全局规则。
内容的提问来源于stack exchange,提问作者Tejföl
相关产品推荐
相关产品推荐

