WPF View устанавливает нулевые свойства ViewModel при закрытии

У меня есть приложение, в котором я отображаю UserControls в GroupBox. Чтобы отобразить элементы управления, я связываюсь со свойством в ViewModel главной формы, которое возвращает ViewModel, которая должна быть отображена. Я настроил DataTemplates так, чтобы форма автоматически знала, какой UserControl / View использовать для отображения каждой ViewModel.

Когда я отображаю другой UserControl, я сохраняю активным ViewModel предыдущего элемента управления, но WPF автоматически отбрасывает представления.

Проблема, с которой я сталкиваюсь, заключается в том, что, когда представление закрывается, любые двухсторонние привязки к свойствам в ViewModel немедленно устанавливаются в null, и поэтому, когда я снова отображаю ViewModel, все значения просто устанавливаются в NULL в UI.

Я предполагаю, что это потому, что как часть представления закрывается, он удаляет и очищает любые значения в элементах управления, которые он содержит, и, поскольку привязки на месте, они распространяются и до ViewModel.

DataTemplates в моих ресурсах

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

Код, используемый для отображения пользовательских элементов управления

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

Пример элемента управления, который я связываю в одном из представлений:

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

и соответствующие свойства ViewModel:

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

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

Любая идея о том, как остановить мои представления обнулить значения в моих ViewModels? Я думаю, что, возможно, мне нужно установить для DataContext представления значение null, прежде чем оно закроется, но я не уверен, как это сделать с тем, как вещи в настоящее время являются обязательными.

Ответы на вопрос(5)

Ваш ответ на вопрос