2009-09-30 15 views
8

私はC#Silverlight 3アプリケーションをいくつかのページで使用しています。最初のページは「ホーム」と呼ばれ、2番目のページは「詳細」と呼ばれます。詳細にナビゲートする唯一の方法は、プログラムによって行われます。どうすればいいの?答えのためにどこでも見て、私が見つけたすべてのXAMLのURIマッパーの実装です....C#Silverlight 3 - プログラム間でページ間を移動しますか?

ヘルプを大幅に

+0

Silverlightのどのバージョンですか? – BigBlondeViking

+0

Silverlight 3 ........... – Goober

答えて

7

は、あなたがのNavigationServiceを試してみました感謝しましたか?

this.NavigationService.Navigate(新しいUri( "Details.xaml"、UriKind.Relative));

+0

はい、ページが存在しないときは.......と表示されます。 – Goober

+0

SilverlightではURIはDOMに関連しています。詳細ページのUri(プロジェクトのルートにある場合)は 'new Uri( "/ Details.xaml"、UriKind.Relative)にする必要があります –

+0

これは動作しません100%あなたに言っています。新しいSilverlightビジネスアプリケーションテンプレート、文字通り任意のページに移動しようとすると、そのメソッドを使用して動作しません。 – Goober

7

のC#:

this.navContent.Navigate(new Uri("Welcome", UriKind.Relative)); 

XAML:

<navigation:Frame 
    x:Name="navContent" 
    HorizontalContentAlignment="Stretch" 
    VerticalContentAlignment="Stretch" 
    Source="Welcome"> 
    <navigation:Frame.UriMapper> 
     <uriMapper:UriMapper> 
      <uriMapper:UriMapping Uri="Welcome" MappedUri="/Views/Welcome.xaml" /> 
      <uriMapper:UriMapping Uri="Profile" MappedUri="/Views/Profile.xaml" /> 
      <uriMapper:UriMapping Uri="Details/{id}" MappedUri="/Views/Details.xaml?photoid={id}" /> 
     </uriMapper:UriMapper> 
    </navigation:Frame.UriMapper> 
</navigation:Frame> 

でもあなたの "詳細" ページでは、(あなたが言ったことにもかかわらず。)マッピングされるべき

7

C#の App.Current.Host。 NavigationState = "/ Welcome";

XAML

+0

これはViewModelでうまくいきます –

+0

これは動作しています!!!!!! – 1myb

2

これを使用してみてください。これは私のために働いた。

((System.Windows.Controls.Frame)(this.Parent))。Navigate(新しいUri( "/ Import"、UriKind.Relative));

5

最善の解決策は次のとおりです。

があなたのApp.xaml.csにこのコードを追加します。

private static Grid root; 

private void Application_Startup(object sender, StartupEventArgs e) 
{ 
    root = new Grid(); 
    root.Children.Add(new MainPage()); 

    this.RootVisual = root; 
} 

public static void Navigate(UserControl newPage) 
{ 
    UserControl oldPage = root.Children[0] as UserControl; 

    root.Children.Add(newPage); 
    root.Children.Remove(oldPage); 
} 

そして、ページ間を移動するために、あなただけ呼び出す必要があります:

App.Navigate(new OtherSamplePage()); 
+0

私はこの答えをどこからでも探してきました。 – MJ33

関連する問題