Ошибка возникает, когда мы используем навигацию для перемещения другой страницы - PullRequest
3 голосов
/ 26 июля 2011
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;

namespace WindowsPhoneApplication7
{
    public partial class Listbox : UserControl
    {
        public Listbox()
        {
            InitializeComponent();
        }

        private void listbox(object sender, MouseEventArgs e)
        {
            this.NavigationService.Navigate(new Uri("/home.xaml", UriKind.Relative));
        }
    }
}

Произошла ошибка ........ не содержит определения для "NavigationService", и не найдено никакого метода расширения "NavigationService", принимающего первый аргумент типа "(вы пропустили директиву usingили ссылка на сборку?)

Ответы [ 3 ]

1 голос
/ 26 июля 2011

NavigationService является собственностью класса PhoneApplicationPage.Вы не наследуете этот класс, вы наследуетесь от UserControl.

. Вам необходимо получить родительскую телефонную страницу, на которой находится пользовательский элемент управления, и получить оттуда ссылку NavigationService.Ошибка компилятора в том, что он не может найти определение NavigationService в классе Listbox, который вы сделали.

0 голосов
/ 03 мая 2012
Dispatcher.BeginInvoke(() =>
    NavigationService.Navigate(new Uri("/home.xaml", UriKind.Relative)));
0 голосов
/ 26 июля 2011

То, что сказал Адам, верно.Но простое решение состоит в том, чтобы определить следующие статические служебные методы в App.xaml.cs

public static PhoneApplicationFrame CurrentRootVisual
{
    get
    {
        return (App.Current.RootVisual as PhoneApplicationFrame);
    }
}

public static bool Navigate(Uri source)
{
    if (CurrentRootVisual != null)
        return CurrentRootVisual.Navigate(source);

    return false;
}

public static void GoBack()
{
    if (CurrentRootVisual != null)
        CurrentRootVisual.GoBack();
}

Тогда вы можете просто сделать:

App.Navigate(yourNavigateUri)

или App.GoBack ()

Откуда угодно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...