2013-08-01 2 views
0

Я хочу создать помощь в моем приложении Widnows Store. Я использую шаблон MVVM. Я нашел это: http://msdn.microsoft.com/en-us/library/windows/apps/jj649425.aspxКак получить родителя UserControl в ViewModel

Я закончил управления XAML, но я не знаю, как это сделать:

private void MySettingsBackClicked(object sender, RoutedEventArgs e) 
    { 
     if (this.Parent.GetType() == typeof(Popup)) 
     { 
      ((Popup)this.Parent).IsOpen = false; 
     } 
     SettingsPane.Show(); 
    } 

в MVVM пути.

ответ

1

Это очень распространенная путаница в MVVM рисунка, что не должно быть никакого кода в Page.xaml.cs, но это не так. Фактически шаблон MVVM означает, что ваша логическая часть, которая не зависит от вашего UI, должна быть в вашем ViewModel этой страницы.

Так, например, если вы устанавливаете видимость какого-либо элемента управления при щелчке на каком-то Control, значит, в этом шаблоне отмечается неправильное мнение. Вот почему класс Messenger существует, если вы хотите отправить какое-либо уведомление или сообщение, которое вы можете использовать.

Так что в вашем случае все префекта так просто использовать класс Messenger из MVVM и отправить информацию родительского контроля, если хотите.

+0

Спасибо за ваш ответ. Я знаю, что MVVM не означает никакого кода в cb, но мне нравится избегать cb. Я думаю, что использовать Messenger везде, где я не знаю, что делать, неправильно. Может быть, это не тот случай. Но я предпочел проверить. – user2641078

+0

В msdn ссылка - это код из BlankPage cb. Что вы думаете об изменении его в сервисе? – user2641078

+0

, пожалуйста, объясните немного больше. Что вы на самом деле имеете в виду под «Изменение его в сервисе»? – loop

Смежные вопросы