Я не совсем уверен, что вы можете установить фокус на UIElement, когда у вас есть шаблон, определенный в DataTemplate. Вместо непосредственной работы с DataTemplate вы можете поместить содержимое вашего DataTemplate в UserControl, а затем процедурно сфокусироваться на вашем TextBox.
<Window.Resources>
<DataTemplate DataType="{x:Type local:ViewModelItem}">
<ContentControl Content="{Binding Path=YourProperty}" />
</DataTemplate>
</Window.Resources>
<TabControl ItemsSource="{Binding Path=ViewModelCollection}">
<TabControl.ItemContainerStyle>
<Style
TargetType="TabItem">
<Setter
Property="Header"
Value="{Binding Path=Title}" />
</Style>
</TabControl.ItemContainerStyle>
</TabControl>
И в коде позади пользовательского элемента управления:
public MyUserControl()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler( OnLoaded );
}
void OnLoaded( object sender, RoutedEventArgs e )
{
MyTextBox.Focus();
}
Я разработал небольшой проект и, поместив DataTemplate в UserControl, TextBox получил фокус при изменении вкладки.