WPF View ustawia właściwości ViewModel na wartość null przy zamykaniu

Mam aplikację, w której wyświetlam UserControls w GroupBox. Aby wyświetlić formanty, wiążę się z właściwością w ViewModel formularza głównego, która zwraca ViewModel do wyświetlenia. Mam skonfigurowane DataTemplates, aby formularz automatycznie wiedział, który UserControl / View użyć do wyświetlenia każdego ViewModel.

Gdy wyświetla się inny UserControl, utrzymuję aktywny widok ViewModel poprzedniego formantu, ale widoki są odrzucane automatycznie przez WPF.

Problem, który mam, jest taki, że kiedy widok jest zamykany, wszelkie dwukierunkowe powiązania z właściwościami w ViewModel są natychmiast ustawiane na null, a więc kiedy ponownie wyświetlam ViewModel, wszystkie wartości są ustawione na null w Interfejs użytkownika

Zakładam, że dzieje się tak, ponieważ w trakcie zamykania widoku usuwa i usuwa wszystkie wartości w kontrolkach, które zawiera, a ponieważ powiązania są na miejscu, rozprzestrzeniają się również do ViewModel.

DataTemplates w moich zasobach

<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>

Kod używany do wyświetlania elementów sterujących użytkownika

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

Przykład formantu, który wiążę w jednym z widoków:

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

oraz odpowiednie właściwości ViewModel:

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

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

Każdy pomysł, jak zatrzymać moje widoki nulling wartości w moim ViewModels? Myślę, że może trzeba ustawić DataContext widoku null przed zamknięciem, ale nie jestem pewien, jak się do tego zabrać ze sposobem, w jaki rzeczy są obecnie wiążące.

questionAnswers(5)

yourAnswerToTheQuestion