2014-07-16 126 views
0

我正在創建一個WindowsPhone應用程序,我必須導航到我的應用程序中的某些頁面,但我不想離開MainPage。我如何導航Windows Phone應用程序中的頁面內的頁面

它就像MainPage中的一個小頁面,有沒有可能?

我試圖創建用戶控制相同的,但缺點是用戶控制負載加載MainPage後,但我不想要相同。我想在應用程序中點擊某處,然後加載下一頁(保持應用程序的快速),而不是在MainPage加載事件中一次加載所有用戶控件。

如果您有其他方法可以幫助,請回復。

+0

您可以創建一個Popup,它是一個完整的頁面。它會快速加載並快速消失。 – BitBank

+0

對不起,但我希望它是一個導航頁面,至於我的任務,我必須使用樞軸或全景,彈出的不會幫助。 主要的是我在我的MainPage中使用動畫,如果我導航到另一個頁面動畫將重置(壞我的應用程序),所以我必須根據事件導航。 –

回答

0

在第一幀保持打開狀態時,無法導航到幀。並且由於樞軸/全景你不能使用彈出。你必須堅持用戶控制的方法。您可以優化性能的XAML下面是關於如何優化XAML

Optimize loading XAML

編輯

MyUserControl1 control = new MyUserControl1(); 
    control.DataContext = //bindable data from usercontrol 
    this.ContentRoot.Children.Add(control); 
+0

thanx好友的回覆,正如我所說如果我使用用戶控件,我將不得不創建超過10個用戶控件(在我的應用程序中需要),沒有問題。 但是,當加載MainPage時,用戶控件在不調用它們的情況下會自動加載,因此,如果有10個包含大量數據的用戶控件(允許說2000首歌曲),它將會非常慢並且效率低下。 因爲一切都會在應用程序被激活時調用。 所以,我希望更好的控制比,否則必須優化與用戶控制:( –

+0

否則,如果有一種方法來停止激活用戶控件時父頁面加載和激活/初始化根據我需要,它會工作:) –

+0

動態添加用戶控制後面的代碼呢?當它需要時。在任何點擊事件上說? –

0

只要有你裏面的MainPage一個框架的一些技巧。使用該框架導航到其他頁面。

<Grid x:Name="LayoutRoot"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto" /> 
      <RowDefinition Height="*" /> 
     </Grid.RowDefinitions> 
     <Grid x:Name="TitlePanel" Grid.Row="0"> 
      <StackPanel Orientation="Vertical"> 
       <TextBlock Text="Title" /> 
       <Button Click="Button_Click" 
         Content="Page1" 
         Tag="SharedFrame.BasicPage1" /> 
       <Button Click="Button_Click" 
         Content="Page2" 
         Tag="SharedFrame.BasicPage2" /> 
      </StackPanel> 
     </Grid> 
     <Grid x:Name="ContentPanel" Grid.Row="1"> 
      <Frame x:Name="rootFrame" /> 
     </Grid> 
    </Grid> 

這是你如何從後面的代碼導航:

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
       Button b = sender as Button; 

       if (b != null && b.Tag != null) 
       { 
         Type pageType = Type.GetType(b.Tag.ToString()); 


         if (pageType != null && rootFrame.CurrentSourcePageType != pageType) 
         { 

          rootFrame.Navigate(pageType); 
         } 
       } 
} 

BasicPage1和BasicPage2是我想要導航到時,內部的MainPage頁面。

+0

thanx男人,但在Silverlight的任何方式?這將是非常有益的:) –

0

如果您的主頁有足夠的可用空間用於「其他頁面」,您可以試試這個: 在您的主XAML中放置另一個Frame並將其他頁面導航到該框架。你的主要仍然可見和活躍。

我已經在更大的屏幕(平板電腦)上做到這一點,並知道陷阱。 請勿將導航助手用於其他頁面,因爲您不會導航回,而是將其他「其他頁面」發送到該框架。或在導航後刪除最後一個揹包條目。

secondFrame.Navigate(pageType, frames); 
if (secondFrame.BackStackDepth > 0) 
    secondFrame.BackStack.RemoveAt(secondFrame.BackStackDepth - 1); 
相關問題