【发布时间】:2019-01-13 08:16:40
【问题描述】:
从 Visual Studio 为 UWP 创建默认 C++ xaml 空白应用时,在 xaml 页面中添加以下代码。
<ScrollViewer>
<StackPanel>
<TextBox Height="20"></TextBox>
<TextBox Height="800"></TextBox>
<Button Content="Enabled" IsEnabled="True"></Button>
<Button Content="Disabled" IsEnabled="False"></Button>
</StackPanel>
</ScrollViewer>
如果我将焦点放在启用按钮上,然后按下禁用按钮,焦点将转移到第一个文本框。
我找到了一种解决方法,即添加一个 0 维可聚焦元素作为堆栈面板的第一个元素。 <Button Width="0" Height="0"></Button>
但这会影响其他孩子。 (id 会变 1)
您知道在 scollviewer 中按下面板中的禁用按钮后将焦点保持在前一个元素上的更优雅的方法吗?
如果堆栈面板不在滚动查看器中,则该行为不存在。
【问题讨论】:
-
您的这个问题是否通过设置
IsTabStop属性得到解决? -
部分。使用 IsTabStop 将焦点从第一个元素更改为 ScrollViewer。我想要与 codepen.io/anon/pen/rrodbE 相同的行为。焦点不变(保持在最后一个焦点元素上)