我在WPF中通过MVVM将一些用户控件加载到tabcontrol中。
在用户控件的XAML中,我使用FocusManager将焦点设置到文本框,但是这似乎仅在创建第一个usercontrol实例时有效。
为了测试,我向usercontrol添加了一个加载的事件处理程序 - 这只在第一个实例上调用。
我正在为用户控件使用数据模板,如下所示:
<DataTemplate DataType="{x:Type local:UserTypeViewModel}">
<local:UserTypeView />
</DataTemplate>
文本框的重点如下:
FocusManager.FocusedElement="{Binding ElementName=txtName}"
此外,我正在使用全局事件处理程序(对于文本框GotFocus事件),它使用调度程序选择所有文本。
如果有人知道如何通过每个用户控制实现焦点,我将非常感激。
谢谢,Ben。
答案 0 :(得分:3)
请记住,在以下情况下,视觉元素只能获得焦点:
我认为第一个原因是它只适用于第一个元素。
至于如何为所有控件实现它 - 您可以使用带有EventSetter的样式来处理Loaded事件。您需要为每种控件创建一个样式,以避免必须为每个控件设置它。