使用MVVM动态添加时提供TabItem焦点

时间:2013-05-20 22:51:17

标签: c# wpf mvvm tabitem

全部,我使用MVVM动态地向TabItem添加TabControl。新TabItems加载正常,但我希望添加的标签能够自动获得焦点。也就是说,我添加了一个标签,我不想点击该标签以使其重点关注。

TabControl的XAML看起来像

<TabControl ItemsSource="{Binding Path=Workspaces}" 
            IsSynchronizedWithCurrentItem="True" 
            HorizontalContentAlignment="Stretch" 
            VerticalContentAlignment="Stretch"
            HorizontalAlignment="Stretch" 
            VerticalAlignment="Stretch" 
            TabStripPlacement="Top">
<TabControl.ItemContainerStyle>
   <Style TargetType="TabItem">
      <Setter Property="Header" Value="{Binding Path=DisplayName}"/>
      <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
      <Setter Property="VerticalContentAlignment" Value="Stretch"/>
   </Style>
</TabControl.ItemContainerStyle>
<TabControl.ContentTemplate>
   <DataTemplate>
      <views:ResourceControl DataContext="{Binding}" 
                             HorizontalAlignment="Stretch" 
                             VerticalAlignment="Stretch"/>
   </DataTemplate>
</TabControl.ContentTemplate>
</TabControl>

我认为(基于这里的一些答案),IsSynchronizedWithCurrentItem="True"会为我解决这个问题,但这不起作用。

如何自动选择添加的TabItem

感谢您的时间。

1 个答案:

答案 0 :(得分:2)

您可以将selectedIndex绑定到viewmodel

上的属性
SelectedIndex="{Binding SelectedTabIndex}" >

或使用

SelectedItem="{Binding SelectedWorkSpace}"

在ViewModel中,当您向工作区添加新的工作区时,请相应地设置SelectedTabIndex / SelectedWorkSpace。

后者使您可以访问当前可能需要的工作空间。