2009-09-30 2 views
8

Скажем, у меня есть приложение C# Silverlight 3 с несколькими страницами. Первая страница называется Домой, а вторая страница называется Подробности. Программный подход - единственный способ навигации по деталям. Как мне это сделать?! Посмотрел везде за ответ и все, что я нашел являются реализациями картографа XAML .... URIC# Silverlight 3 - программно перемещаться между страницами?

Помощь высоко оценили

+0

Какая версия Silverlight? – BigBlondeViking

+0

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

ответ

7

Вы пробовали NavigationService?

this.NavigationService.Navigate (новый Uri ("Details.xaml", UriKind.Relative));

+0

Да, просто говорит мне, что страница не существует ......., когда она делает. – Goober

+0

В Silverlight URI поклонения относятся к XAP. Uri для detailspage (если он в корне вашего проекта) должен быть «новым 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) (это.Parent)). Навигация (новый 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

Я искал всюду для этого ответа +3, если бы мог – MJ33

Смежные вопросы