Как выполнить навигацию в Silverlight 4.0 с помощью MVVM? - PullRequest
3 голосов
/ 28 октября 2010

Я новичок в Silverlight и не могу понять, как правильно перемещаться между страницами, особенно когда мне нужно передать данные.

Классический пример: у меня есть список людей на одной странице, и когда я нажимаю на человека в сетке данных, я хотел бы перейти на страницу сведений и загрузить эти данные. Мне нужно передать PersonId. Что еще более важно, мне нужно знать, как это сделать из ViewModel.

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

Ответы [ 2 ]

0 голосов
/ 13 декабря 2010

В SelectedItemChanged вы можете установить свойство ViewModel "SelectedItem" с нужным вам объектом на другой странице. Ваша ViewModel должна была быть Singleton. На другой странице вам нужно установить для DataContext значение ViewModel, и теперь вы можете привязать SelectedItem к нужному элементу управления.

Единственное, что мне не нравится, это то, что вам все равно нужно будет перейти к коду позади начальной страницы, получить SelectedItem из DataGrid и установить ViewModel с этим значением.

0 голосов
/ 28 октября 2010

Самое основное, что нужно сделать, это изменить значение Application.Current.RootVisual и установить соответствующее значение DataContext.Однако гораздо лучше иметь некоторые обертки, которые настроят это правильно для вас.Например, в вашем пользовательском представлении, к которому вы переходите, конструктор представления может обработать некоторые из этих логических элементов для вас более приятным способом.Если вы используете Prism, то в конечном итоге вы говорите об изменении оболочки или контейнера внутри оболочки.

...