我有一个包含多个文本框的网格(Grid)。根据用户可能采取的操作,焦点应更改为其中一个文本框。我的当前解决方案使用ViewModel中的字符串属性和xaml中的数据触发器来更改焦点。它很好用,但似乎是一种比较绕弯子的方式来实现这一点,所以我想知道是否有更简洁的方法?
<Grid.Style>
<Style TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding FocusedItem}" Value="number">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=number}"/>
</DataTrigger>
<DataTrigger Binding="{Binding FocusedItem}" Value="name">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=name}"/>
</DataTrigger>
<DataTrigger Binding="{Binding FocusedItem}" Value="id">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=id}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
您可以看到,属性的值和元素的名称相同,因此我希望在单个触发器中完成此操作,而不是针对每个元素设置一个触发器。
也许有人能想出更清晰的方法?
提前感谢您。
TabIndex
进行 Tab 键切换,所以你只需要设置一次焦点。 - WiiMaxx