2010-06-11 39 views
0

我將所有現有的Silverlight應用程序UserControls轉換爲Pages,以便我可以使用Navigation Framework。SL 3導航無效!

無論如何,所以我創建了一個名爲MyFrame的UserControl,它將託管所有頁面。 在我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> 

而且回調我HyperlinkBut​​ton的事件處理程序中,我有以下幾點:

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

Login.xaml文件位於我的根文件夾(位於Project下)。此導航似乎不起作用! 我得到的例外讀取像這樣:

導航只支持到那些片段,或以「/」開始,或包含相對URI「;組分/」。 參數名稱:uri

登錄頁面無法加載。 Login.xaml沒有問題,因爲當我設置

this.RootVisual = new Login(); 

頁面加載就好了。

我也嘗試將HyperlinkBut​​ton的NavigateUri屬性設置爲「Login」。沒有雪茄。

我會感謝任何幫助!

感謝很多提前

回答

0

好原來,明確設置框架的UriMapper屬性可以解決此問題。看起來像UriMapper沒有被初始化並且與Frame相關聯。

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

以上解決了這個問題。