O WPF View define as propriedades do ViewModel como nulas no fechamento

Eu tenho um aplicativo onde estou exibindo UserControls em um GroupBox. Para exibir os controles, estou vinculando a uma propriedade no ViewModel do formulário principal, que retorna um ViewModel a ser exibido. Eu tenho o DataTemplates configurado para que o formulário saiba automaticamente qual UserControl / View usar para exibir cada ViewModel.

Quando exibo um UserControl diferente, mantenho o ViewModel do controle anterior ativo, mas os modos de exibição são descartados automaticamente pelo WPF.

O problema que estou tendo é que, quando a visão é desligada, quaisquer ligações bidirecionais para as propriedades no ViewModel são imediatamente definidas como nulas, e assim, quando exibo o ViewModel novamente, todos os valores são definidos como nulos no UI.

Suponho que isso se deva ao fato de que, como parte do fechamento do View, ele descarta e limpa todos os valores nos controles que contém e, como as ligações estão em vigor, elas também se propagam para o ViewModel.

DataTemplates nos meus recursos

<code><DataTemplate DataType="{x:Type vm:HomeViewModel}">
    <vw:HomeView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:SettingsViewModel}">
    <vw:SettingsView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:JobListViewModel}">
    <vw:JobListView />
</DataTemplate>
</code>

Código usado para exibir os controles do usuário

<code><GroupBox>
    <ContentControl  Content="{Binding Path=RightPanel}" />
</GroupBox>
</code>

Exemplo de um controle que estou vinculando em uma das exibições:

<code>    <ComboBox Name="SupervisorDropDown" ItemsSource="{Binding Path=Supervisors}" DisplayMemberPath="sgSupervisor" 
           SelectedValuePath="idSupervisor" SelectedValue="{Binding Path=SelectedSupervisorID}" />
</code>

e as propriedades relevantes do ViewModel:

<code>public ObservableCollection<SupervisorsEntity> Supervisors
    {
        get
        {
            return supervisors;
        }
    }

public int? SelectedSupervisorID
{
    get
    {
        return selectedSupervisorID;
    }
    set
    {
        selectedSupervisorID = value;
        this.OnPropertyChanged("SelectedSupervisorID");
    }
}
</code>

Alguma ideia de como impedir que minhas exibições anulem os valores em meus ViewModels? Eu estou pensando que talvez eu precise definir o DataContext da View como nulo antes de ser fechado, mas não tenho certeza de como fazer isso com a maneira como as coisas são atualmente vinculantes.

questionAnswers(5)

yourAnswerToTheQuestion