【发布时间】:2010-03-24 23:10:13
【问题描述】:
我有一个绑定到视图模型的 TabControl
<TabControl
ItemsSource="{Binding Path=ViewModelCollection}" >
<TabControl.ItemContainerStyle>
<Style
TargetType="TabItem"
BasedOn="{StaticResource {x:Type TabItem}}">
<Setter
Property="Header"
Value="{Binding Title}" />
<Setter
Property="Content"
Value="{Binding}" />
</Style>
</TabControl.ItemContainerStyle>
</TabControl>
每个选项卡仅包含一个视图模型项。我使用数据模板来显示这个。
<!-- View Model Template -->
<DataTemplate
DataType="{x:Type local:ViewModelItem}">
<DockPanel>
<TextBox Text="I want this to have the focus"/>
</DockPanel>
</DataTemplate>
当当前选项卡更改时,我希望焦点位于数据模板中的文本框(这是一个简单的示例,在我的生产代码中我有一个数据网格)。我该如何做到这一点?
【问题讨论】:
-
在代码或 XAML 中设置焦点?
-
在 xaml 中这样做会很好,选项卡项的数量是动态的。在代码中设置它,意味着拖网查找文本框的可视化树。如何在数据模板上设置初始焦点元素以及如何在选项卡栏上设置焦点的一般解决方案会很好。但我不介意使用代码。甚至从标签栏派生,所以我不必把它放在后面的代码中。
标签: wpf focus datatemplate tabbar