有没有办法禁用元素及其所有子元素的可聚焦性?

时间:2018-01-31 03:13:58

标签: xaml uwp

我正在构建一个UWP应用程序,并且想知道是否有一种简单且高效的方法来禁用元素及其所有子元素的可聚焦性。 IsTabStop=false仅禁用单个元素的可聚焦性,但不会被其子元素继承。

3 个答案:

答案 0 :(得分:1)

你可以:

  1. 循环遍历元素并在其上应用IsTabStop = false(只需从主元素中获取子元素并循环它们)

  2. 执行一些绑定,将每个控件的IsTabStop值绑定到主元素的IsTabStop值。但是,根据您拥有的控件数量,这可能会变得乏味......

答案 1 :(得分:1)

由于UWP没有可聚焦属性,最好的办法是创建一个GotFocus处理程序,该处理程序立即将焦点返回给之前拥有它的元素。

答案 2 :(得分:1)

通过focus docs阅读控件并说明:

  

为了集中精力,每一项都必须是真的:

     
      
  • 可见性可见
  •   
  • IsEnabled是真的
  •   
  • IsTabStop是真的
  •   
  • 必须在加载模板的情况下实例化控件
  •   

IsEnabled禁用整个控件的焦点(包括子项)。因此,一种方法是将<ContentControl>元素中的所有内容包围起来(假设它不会从Control继承)并只设置IsEnabled="False"