2011-02-25 51 views
3

我將解釋什麼,我試圖在下列情況下做到:導航到另一個頁面時方向改變

我有兩個頁面 - MainPage.xaml中(定向人像)和LandscapeLeft.xaml(方向LandscapeLeft)。

當用戶在Lanscape位置上旋轉手機時,我想從MainPage.xaml導航到LandscapeLeft.xaml

我已經爲完成如下:

XAML:

SupportedOrientations="PortraitOrLandscape" Orientation="Portrait" 

後面的代碼:

protected override void OnOrientationChanged(OrientationChangedEventArgs e) 
    { 
     switch (e.Orientation) 
     { 
      case PageOrientation.LandscapeLeft: 
       NavigationService.Navigate(new Uri("/LandscapeLeft.xaml", UriKind.RelativeOrAbsolute)); 
       break; 
     } 
     base.OnOrientationChanged(e); 
    } 

當我從PortraitUp旋轉手機即可LandscapeLeft位置會發生什麼:
首先,MainPage.xaml的內容旋轉橫向,然後加載LandscapeLeft.xaml。

我想要做的是消除MainPage.xaml內容旋轉的過程。它看起來不太好,影響性能。簡單地說,當我旋轉手機時,我希望將LandscapeLeft.xaml加載 ,而無需事先更改MainPage.xaml的內容方向。

請問,有什麼建議嗎?

回答

5

如何把你的內容放在一個框架中。 定向事件觸發時,更改框架內容而不是導航到其他頁面。

... 
     case PageOrientation.LandscapeLeft: 
     FrmContents= new LandscapeLeft(); 
... 

這應該解決你的性能問題。

+0

謝謝,作品非常出色。這就是我一直在尋找的! – Maku 2011-02-25 12:27:33

+0

沒問題,很高興我能幫到 – 2011-02-25 12:31:33

+0

是silverlight控件的框架嗎? – gurehbgui 2011-11-23 12:33:13

3

只需將所有功能放在一個頁面上,然後根據方向改變所顯示的內容。

+0

正如我寫給斯圖爾特,我有太多的控制頁面到 通過可見性處理它們。 – Maku 2011-02-25 12:26:31

+0

@Maku抱歉應該更清楚了。我絕不會建議單獨更改頁面上每個項目的可見性。 – 2011-02-25 12:50:08

2

從「用戶」的角度來看,我不認爲你應該使用導航來達到這個效果。

導航與Back按鈕非常緊密相關 - 所以用戶通常也不會將其與設備方向綁定。

事情可以做大概是:

  • 考慮同時承載的縱向和在MainPage.xaml景觀控制 - 只是改變取決於方向的2所控制的「知名度」。
  • 如果可能,請考慮對兩個方向使用相同的控件 - 但對於2個方向適當的佈局更改。

我已經編寫了支持兩種方向的應用程序 - 它們看起來表現非常好 - 您看到了哪些性能問題?

+0

謝謝你的建議。通常情況下,我會這樣做,因爲你上面寫的是 ,但是我有太多的頁面控件來處理它們的 知名度屬性。 – Maku 2011-02-25 12:25:32

+0

難道你不能把它們全部放在兩個面板中,然後改變每個父面板的可見性嗎?或者你不能將每個單獨的可見性綁定到某個共享屬性上? – Stuart 2011-02-25 12:27:34

+0

當然可以做到。你是絕對正確的。不過,我更容易分別設計不同的方向頁面(包含完全不同的內容)。無論如何,謝謝你的建議! – Maku 2011-02-25 15:29:01

相關問題