как передать параметр на страницу? - PullRequest
1 голос
/ 22 ноября 2011

У меня есть страница, которая загружается во фрейм.в коде позади, у меня есть строковая переменная с именем mode.Что я хочу сделать, это когда гиперссылка нажата, откройте страницу и установите режим

Я надеялся сделать это декларативно.Я попытался сделать

NavigatUri="myPage?mode=edit"

, а затем добавить следующий код в код после вызова компонента инициализации

mode = this.NavigationContext.QueryString["mode"];

Но я получил страницу не найдена.У меня ощущение, что я на другой планете.Я новичок в Silverlight.Как мне перейти на страницу таким образом и передать этот аргумент?

1 Ответ

1 голос
/ 23 ноября 2011

Взгляните на UriMapper на главной странице. Финальный UriMapping обычно будет уловом всего, что выглядит так: -

<uriMapper:UriMapping Uri="/{pageName}" MappedUri="/Views/{pageName}.xaml"/>

Вы заметите «/» в начале Uri, и соответствующая страница находится в папке «/ Views».

Используйте атрибут: -

 NavigatUri="/myPage?mode=edit" 

убедитесь, что ваша страница находится в папке Views.

Однако я почти уверен, что у вас это уже есть. Ваша настоящая проблема - ваша попытка получить доступ к NavigationContext в исполнении конструктора страницы. Это не доступно в тот момент в жизненном цикле страниц. Вы не должны пытаться использовать его, пока не будет выполнено OnNavigatedTo.

public partial class MyPage : Page
{
    public MyPage()
    {
        InitializeComponent();
    }

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        string mode = null;
        if (NavigationContext.QueryString.ContainsKey("mode"))
        {
            mode = NavigationContext.QueryString["mode"];
        }

        // Do stuff with mode.
    }
}

Причина, по которой вы видите сообщение об ошибке «страница не найдена», заключается в том, что приложения Nav ErrorWindow просто предполагают, что сбой при загрузке страницы произошел из-за того, что она не была найдена. То, что вы правильно закодировали свои страницы, вероятно, является разумным предположением.

...