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

C# 使用MVVM动态添加时提供TabItem焦点,c#,wpf,mvvm,tabitem,C#,Wpf,Mvvm,Tabitem,总之,我正在使用MVVM动态地将TabItem添加到TabControl中。新的选项卡items加载良好,但我希望添加的选项卡自动获得焦点。也就是说,我添加了一个选项卡,我不想点击该选项卡来获得焦点 选项卡控件的XAML如下所示 <TabControl ItemsSource="{Binding Path=Workspaces}" IsSynchronizedWithCurrentItem="True" HorizontalContent

总之,我正在使用MVVM动态地将
TabItem
添加到
TabControl
中。新的
选项卡items
加载良好,但我希望添加的选项卡自动获得焦点。也就是说,我添加了一个选项卡,我不想点击该选项卡来获得焦点

选项卡控件的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”
可以为我解决这个问题,但这不起作用

如何自动选择添加的
选项卡项


谢谢您的时间。

您可以将selectedIndex绑定到viewmodel上的属性

SelectedIndex="{Binding SelectedTabIndex}" >
或使用

SelectedItem="{Binding SelectedWorkSpace}"
在ViewModel中,将新工作空间添加到工作空间时,请适当设置SelectedTabinex/SelectedWorkSpace


后者允许您访问当前的工作区,您可能仍然需要它。

+1谢谢。但是,这里的
SelectedTabindex
是什么?我是否必须在相关视图模型中创建属性?我认为最好绑定到SelectedItem(而不是SelectedIndex)。@grantnz,可能是的。我之前使用过SelectedIndex,它很有效,我必须看看SelectedItem是否有效。也许Killercam可以让我们know@cheedep,我将SelectedItem绑定与选项卡控件一起使用,因为它在视图模型上的属性似乎比在集合中的索引更自然。这两种方式可能都没有多大区别。非常正确,我会更新答案。在使用转换器绑定到Viewmodel上的Enum属性时,我使用了SelectedIndex。