2013-07-23 84 views
0

我想在我的導航頁面中傳入一個參數,但是這不起作用。帶參數的導航頁面

我得到了錯誤:No xaml found at /Views/post,而我有我的住址欄:/Views/post?id=53

這裏是我的MainPage.xaml中的一部分:

<Border BorderBrush="Black" 
     BorderThickness="0.5" 
     Background="Beige" 
     Opacity="0.70" 
     Visibility="Collapsed" 
     CornerRadius="5"> 
    <HyperlinkButton x:Name="Link4" 
        Style="{StaticResource LinkStyle}" 
        NavigateUri="/post?id={id}" 
        TargetName="ContentFrame" /> 
</Border> 

所以,我想直接加載我的網頁這樣的當我「M記錄:

ContentFrame.Navigate(new Uri("/post?id=53", UriKind.Relative)); 

但是,當我在我的網頁(類型Navigation.Page)到了,我在做不更迭得到53在參數ameters,當我在構造函數中去:

我嘗試這樣做:

string id = this.NavigationContext.QueryString["id"]; 

但NavigationContext是空

也試過這樣的:在它

Uri uri = new Uri(Application.Current.Host.Source.AbsoluteUri); 

沒什麼用處。

我從來沒有在silverlight中的URL中傳遞參數。我該如何解決這個問題?

另外,當我直接在地址欄中寫入url時,似乎這並不總是有效。

回答

2

認爲您需要重寫OnNavigatedTo方法,您可以在其中獲取NavigationContext實例。

例子:

// Executes when the user navigates to this page. 
protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    this.Init(NavigationContext.QueryString["id"], NavigationContext.QueryString["id"]); 
} 

而且,我認爲你需要在一個框架實現UriMapper,那麼你就可以得到所需的參數。

例子:

<navigation:Frame x:Name="NavigationFrame" Navigating="NavigationFrame_OnNavigating"> 
    <navigation:Frame.UriMapper> 
    <uriMapper:UriMapper> 
     <uriMapper:UriMapping MappedUri="/Views/Page.xaml?id={id}" Uri="/Page/{id}" /> 
    </uriMapper:UriMapper> 
    </navigation:Frame.UriMapper> 
</navigation:Frame> 
+0

不能在構造函數中獲得NavigationContext實例。它等於空。 Page.OnNavigatedTo方法的描述:「當頁面成爲框架中的活動頁面時調用」。 它從msdn。想想,這是處理NavigationContext的好地方。 – Nurlan

+0

不過,當我進入地址時,我並不總是可以進入我的頁面。 –

+0

您是否嘗試在OnNavigatedTo方法中獲取NavigationContext? NavigationContext的價值是什麼? – Nurlan