Goo*_*ber 8 c# navigation silverlight silverlight-3.0
假设我有一个带有多个页面的C#Silverlight 3应用程序.第一页称为Home,第二页称为Details.导航到详细信息的唯一方法是以编程方式.我该怎么做呢?!到处寻找答案,我发现的都是xaml uri mapper实现....
非常感谢
小智 7
你试过NavigationService吗?
this.NavigationService.Navigate(new Uri("Details.xaml",UriKind.Relative));
C#:
this.navContent.Navigate(new Uri("Welcome", UriKind.Relative));
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
甚至你的"细节"页面也应该被映射(尽管你说的是.)
小智 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);
}
Run Code Online (Sandbox Code Playgroud)
然后,要在页面之间导航,您只需调用:
App.Navigate(new OtherSamplePage());
Run Code Online (Sandbox Code Playgroud)