SL 3 навигация не работает! - PullRequest
0 голосов
/ 11 июня 2010

Я преобразовал все свои существующие пользовательские элементы управления Silverlight в Pages, чтобы я мог использовать Navigation Framework.

В любом случае, поэтому я создал UserControl с именем MyFrame, в котором будут размещаться все страницы.В моем App.xaml.cs у меня есть следующее, чтобы убедиться, что MyFrame загружается при загрузке приложения:

private void Application_Startup(object sender, StartupEventArgs e)
{
    this.RootVisual = new MyFrame();
}

Мой класс UriMapper находится в App.xaml и выглядит следующим образом:

<navcore:UriMapper x:Key="uriMapper">
    <navcore:UriMapping Uri="Login" MappedUri="Login.xaml">
</navcore:UriMapper>

В моем классе 'MyFrame' у меня есть следующее

<StackPanel Orientation="Horizontal">
    <StackPanel Orientation="Vertical">
        <HyperlinkButton Tag="Login" Content="Login" Click="HyperlinkButton_Click" />
    </StackPanel>
    <StackPanel Orientation="Vertical">
        <navigation:Frame x:Name="ContentFrame" Style="{StaticResource ContentFrameStyle}" />
     </StackPanel>
 </StackPanel>

И в функции обратного вызова для обработчика событий моего HyperlinkButton у меня есть следующее:

private void HyperlinkButton_Click(object sender, RoutedEventArgs e)
{
    ContentFrame.Navigate(new Uri((sender as HyperlinkButton).Tag.ToString(), UriKind.Relative));
}

Файл login.xaml находится в моей корневой папке (прямо под Project).Эта навигация, кажется, не работает!Исключение, которое я получаю, выглядит так:

Навигация поддерживается только для относительных URI, которые являются фрагментами или начинаются с '/' или содержат '; component /'.Имя параметра: uri

Страница входа не загружается.С Login.xaml нет проблем, так как при установке

this.RootVisual = new Login();

страница загружается просто отлично.

Я также попытался установить атрибут NavigateUri для HyperlinkButton в значение «Login».Никакой сигары.

Буду признателен за любую помощь!

Заранее большое спасибо

1 Ответ

0 голосов
/ 11 июня 2010

Хорошо, получается, что явная установка свойства UriMapper для Frame решает эту проблему. Похоже, UriMapper не был инициализирован и связан с фреймом.

 <navigation:Frame x:Name="ContentFrame" Style="{StaticResource ContentFrameStyle}" UriMapper="{StaticResource uriMapper}"/>

Вышеуказанное решает проблему.

...