Существует ли общее соглашение о навигации в приложении MVVM Light для Windows Phone? - PullRequest
0 голосов
/ 12 ноября 2011

По мере того, как мое приложение становится больше, я обнаруживаю, что один и тот же тип сущностей появляется все больше и больше, обычно в виде списка.

Когда кто-то нажимает на объект, я хочу перейти к подробному представлению этого объекта.

Примером этого может быть продукт: он отображается в списке продуктов по категориям, он появляется в результатах поиска или может отображаться как сохраненный элемент избранного. В моем случае, все это происходит из таблицы в локальном хранилище SQLCE.

Каждый раз, когда я открываю сущность каким-либо образом, чтобы кто-то мог нажать на нее, я в основном вырезал один и тот же код: подписаться на событие SelectionChange в списке, извлечь сущность, использовать обмен сообщениями MVVM Light, чтобы сообщить, что выбранная сущность имеет изменилось, затем вызовите NavigationService для ведения бизнеса.

Кто-нибудь работал над чем-то похожим, и если да, то что вы придумали? Или, что более важно, если есть какое-то соглашение по инструментарию MVVM Light, которое я пропускаю, не могли бы вы указать мне правильное направление?

Ответы [ 2 ]

0 голосов
/ 16 ноября 2011

Я думаю, что вопрос здесь в том, как мне справиться с этим без вырезания / вставки одного и того же кода каждый раз?Если это так, возможно, вы пытаетесь упаковать сущность / список в XAML usercontrol!Взгляните на это: http://www.windowsphonegeek.com/articles/Creating-a-WP7-Custom-Control-in-7-Steps

Тогда, если представление должно быть другим, вы могли бы взглянуть на это: http://www.windowsphonegeek.com/articles/Implementing-Windows-Phone-7-DataTemplateSelector-and-CustomDataTemplateSelector (этот пример выполняет разные стили в одном списке, ноМожно изменить это, чтобы применять разные стили только на каждой странице со списком)

0 голосов
/ 14 ноября 2011

Вы звоните в NavigationService из-за кода или из View Model сейчас? Если первое, вы можете проверить арктику WP7 Navigation от LBugnion для ее запуска с ВМ. Если вы объедините это с поведением EventToCommand ( как здесь ), вы сможете создать красивую и чистую команду «MyEntitySelected» в виртуальной машине, которая принимает сущность в качестве параметра.

...