2013-07-15 2 views
2

Закрыть ребенка Window после нажатия ok/cancel.Закрыть дочернее окно из родительской viewmodel wpf mvvm

Я вызова дочернего окна от родительского MVM модели:

//parent view model 
var optionSetViewModel = new OptionSetViewModel(); 
var optionSet = new OptionSet(); 
optionSet.SetViewModel(optionSetViewModel); 

optionSet.SetOwner(_componentview); 
optionSet.ShowDialog(); 

Код для ОК и отменить для ребенка Window написан вид ребенка модели:

private void OkClick() 
{   
    _childWindow.Close(); 
} 

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

_someText = optionSetViewModel.SomeText; 
_noteText = optionSetViewModel.NoteText; 
_optionsetLanguage = optionSetViewModel.OptionSetSelectedItem; 
_optionsetselected = optionSetViewModel.OptionSetSelected.ToString(); 
+0

мы должны видеть свой код после 'optionSet.ShowDialog();' – Bolu

+0

обновленный код PPL, сделать check – user2189168

+0

Вы должны позволить Messenger Class обрабатывать закрытие между ViewModels, это проще. – Rudi

ответ

1

С Catel (см http://www.catelproject.com/) вы можете закрыть вид, основанный на модели представления. Таким образом, закрытие вид означает, что вызов, как это:

myChildViewModel.CloseViewModel(); 

Чтобы показать дочернее окно:

var myChildViewModel = new MyChildViewModel(); 
uiVisualizerService.Show(myChildViewModel); 
Смежные вопросы