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
<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>
Código usado para exibir os controles do usuário
<GroupBox>
<ContentControl Content="{Binding Path=RightPanel}" />
</GroupBox>
Exemplo de um controle que estou vinculando em uma das exibições:
<ComboBox Name="SupervisorDropDown" ItemsSource="{Binding Path=Supervisors}" DisplayMemberPath="sgSupervisor"
SelectedValuePath="idSupervisor" SelectedValue="{Binding Path=SelectedSupervisorID}" />
e as propriedades relevantes do ViewModel:
public ObservableCollection<SupervisorsEntity> Supervisors
{
get
{
return supervisors;
}
}
public int? SelectedSupervisorID
{
get
{
return selectedSupervisorID;
}
set
{
selectedSupervisorID = value;
this.OnPropertyChanged("SelectedSupervisorID");
}
}
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.