在WPF中,我可以指定一个控件容器是一个Focus Scope,并且该选项卡导航应循环通过控件(即当我从最终控件中跳出时,焦点将返回到第一个):
<Border FocusManager.IsFocusScope="True" KeyboardNavigation.TabNavigation="Cycle">
<ItemsControl ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox x:Name="Editor" Text="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Border>
Run Code Online (Sandbox Code Playgroud)
我想要做的是检测焦点何时离开最终场.如果不确切知道焦点范围内的控件数量,有谁知道这是否可行?
为了结束这个问题,我将我的评论更改为答案。该解决方案本质上是在视图模型中保留所选项目的记录并对其更改做出反应。作为一般规则,我认为视图模型不应该意识到控制焦点,但在这种情况下,我认为这是必需的,因为视图模型需要对焦点变化做出反应。
最后,我能够使用默认集合视图来保存当前项目的记录,并使用一些附加属性来解决我的具体问题,以使其与当前键盘焦点保持一致