Навигация с использованием RelayCommand <T>в MVVM Light - PullRequest
2 голосов
/ 15 июля 2011

Я следовал учебнику Джесси Либерти по MVVM Light для Windows Phone 7, но я застрял в этой проблеме.Мне нужно перейти с главной страницы на страницу с подробностями.Следуя руководству, я использую RelayCommand в MainViewModel:

public RelayCommand<Customer> DetailsPageCommand { get; private set;}

Затем я инициализирую его в конструкторе:

DetailsPageCommand = new RelayCommand<Customer>((msg) => GoToDetailsPage(msg));

Наконец, вы реализуете метод GoToDetailsPage:

private object GoToDetailsPage(Customer msg)
{
    System.Windows.MessageBox.Show("Go to details page with: " +
        msg.First +
        " " +
        msg.Last );
        return null;
}

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

var msg = new GoToPageMessage {PageName = "DetailPage"};
Messenger.Default.Send(msg);

1 Ответ

5 голосов
/ 16 июля 2011

Вам необходимо зарегистрироваться, чтобы получать сообщения такого типа, а затем перемещаться соответствующим образом.
В следующем предполагается, что вы используете имя страницы и переходите к сведениям о конкретном клиенте, передавая его идентификатор в строке запроса.

Messenger.Default.Register<Customer>(
    this,
    c => NavigationService.Navigate("/Pages/CustomerDetails.xaml?cid=" + c.Id));

Затем вы измените свой код соответствующим образом:

private void GoToDetailsPage(Customer msg)
{
    Messenger.Default.Send(msg);
}

Надеюсь, это поможет.

...