WPF View establece las propiedades de ViewModel en nulo en el cierre

Tengo una aplicación donde muestro UserControls en un GroupBox. Para mostrar los controles, estoy enlazando a una propiedad en el ViewModel del formulario principal, que devuelve un ViewModel para ser mostrado. He configurado DataTemplates para que el formulario sepa automáticamente qué UserControl / View debe usar para mostrar cada ViewModel.

Cuando muestro un UserControl diferente, mantengo activo el ViewModel del control anterior, pero WPF descarta las Vistas automáticamente.

El problema que tengo es que cuando la vista se cierra, cualquier enlace de dos vías a las propiedades en el ViewModel se establece inmediatamente en nulo, y así cuando vuelvo a mostrar el ViewModel, todos los valores se configuran en nulo en el IU.

Supongo que esto se debe a que, como parte del cierre de la Vista, dispone y borra los valores de los controles que contiene, y como los enlaces están en su lugar, también se propagan al ViewModel.

Plantillas de datos en mis 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 utilizado para mostrar los controles de usuario

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

Ejemplo de un control que estoy enlazando en una de las Vistas:

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

y las propiedades relevantes de ViewModel:

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

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

¿Alguna idea sobre cómo detener mis vistas anulando los valores en mis ViewModels? Estoy pensando que tal vez necesito establecer el DataContext de la Vista en nulo antes de que se cierre, pero no estoy seguro de cómo hacerlo con la forma en que las cosas están vinculantes actualmente.

Respuestas a la pregunta(5)

Su respuesta a la pregunta