WPF ComboBox SelectedItem

Ok travaillé avec WPF pour un moment, mais j'ai besoin d'aide.

J'ai un ComboBox comme ci-dessous:

<TabControl>
    <TabItem Header="1">
        <ComboBox ItemsSource="{Binding MyList}" SelectedItem="{Binding MyListSelection}"/>
    </TabItem>
    <TabItem Header="2"/>
</TabControl>

Chaque fois que je m'éloigne de l'onglet 1, puis revenir à la sélection est supprimée. Je crois que la raison est que les contrôles sont détruits lorsqu'ils passent hors de portée, puis de nouveau dans. Mais dans le processus de la SelectedItem devient nulle, ce qui n'est pas vraiment ce que l'utilisateur veut, c'est un événement en raison de l'INTERFACE utilisateur du cycle de vie.

Alors je me demandais quelle est la meilleure route à prendre? Je suis en train de construire cette application avec MVVM j'ai donc pu ignorer un ensemble d'appel sur le MyListSelection Bien dans mon ViewModel mais j'ai ComboBoxes tous sur la place et n'aime pas la modification de mon ViewModel pour ce que je considère comme un bug de WPF.

J'ai pu de sous-classe WPF ComboBox, mais il n'y a pas de SelectedItemChanging cas je ne peux qu'ajouter un gestionnaire lorsque SelectedItem changé.

Des idées?

Mise à JOUR:

Bon, après avoir battu ma tête contre le mur, j'ai trouvé pourquoi mon problème n'a pas pu obtenir de la reproduction. Si la liste type d'élément est une classe pour une raison quelconque, le SelectedItem est défini par WPF à null, mais si c'est un type de la valeur qu'il ne l'est pas.

voici ma classe de test(VMBase est juste une classe abstraite qui implémente INotifyPropertyChanged):

public class TestListViewModel : VMBase
{
    public TestListViewModel()
    {
        TestList = new List<TestViewModel>();
        for (int i = 0; i < 10; i++)
        {
            TestList.Add(new TestViewModel(i.ToString()));
        }
    }

    public List<TestViewModel> TestList { get; set; }

    TestViewModel _SelectedTest;
    public TestViewModel SelectedTest
    {
        get { return _SelectedTest; }
        set
        {
            _SelectedTest = value;
            OnPropertyChanged("SelectedTest");
        }
    }
}

public class TestViewModel : VMBase
{
  public string Name {get;set;}
}

Donc quand je change de TestList de type int et faire l'aller-retour entre les onglets SelectedItem reste le même. Mais lorsqu'il est de type TestViewModel SelectedTest obtient la valeur null lorsque l'tabitem devient flou.

Ce qu'il se passe?

OriginalL'auteur Jose | 2010-01-28