WPF TabControl - Impossible de sélectionner par programmation les onglets

J'ai une interface utilisateur avec un TabControl qui affiche une page de démarrage. D'autres éléments peuvent être ajoutés par un double-clic sur le contenu, par exemple, une grille de données. De nouveaux onglets doivent être sélectionnés lorsqu'ils sont créés. Si le document correspondant à l'élément de la grille est déjà ouvert, puis l'onglet existant pour que le document devrait être ouvert plutôt que d'en créer un nouveau.

Je sais que je devrais être capable de programmation pour sélectionner un onglet en définissant le TabControl est SelectedItem ou SelectedIndex propriétés. Toutefois, l'onglet désiré jamais réellement active. Si j'ai mis un et puis inspectez le TabControl de l'état dans le débogueur, puis les deux domaines semblent mettre à jour correctement. Cependant, après je continue l'exécution, je vois que l'onglet sélectionné reste inchangé dans l'INTERFACE utilisateur, et si je fais une pause et d'inspecter le TabControl de l'état de nouveau je vois que le SelectedItem et SelectedIndex sont retournés à leurs valeurs précédentes. La sélection d'un onglet en cliquant dessus dans l'INTERFACE utilisateur, d'autre part, fonctionne très bien.

Voici la déclaration pour le TabControl:

<TabControl x:Name="Tabs" >
    <TabItem x:Name="StartPageTab" Header="Start Page" DataContext="{Binding Path=StartPageViewModel}">
        ...
    </TabItem>
</TabControl>

Et le code permettant d'ajouter et de sélectionner les onglets:

private void _SelectTab(MyViewModel model)
{
    TabItem tab;
    if (_TryFindTab(model, out tab)) Tabs.SelectedItem = tab;
}

private bool _TryFindTab(MyViewModel target, out TabItem tab)
{
    foreach (TabItem item in Tabs.Items)
    {
        MyViewModel model = item.DataContext as MyViewModel;
        if (model != null && model.Equals(target))
        {
            tab = item;
            return true;
        }
    }
    tab = null;
    return false;
}

private void _AddTab(MyViewModel model)
{
    TabItem tab = new TabItem { DataContext = model, Content = new MyView() };
    Binding bind = new Binding { Source = model, Path = new PropertyPath("Name") };
    tab.SetBinding(TabItem.HeaderProperty, bind);

    Tabs.Items.Add(tab);
    Tabs.SelectedItem = tab;
}

source d'informationauteur Sean U