2013-07-04 45 views
4

是否有可能從另一個項目實例化一個PhoneApplicationPage(在同一個解決方案中,但這不應該很重要,如果它?)並顯示它?windows phone,實例化一個頁面並顯示它

嗯,我知道這是可能的實例化與另一頁:

MyPageInProjectB bPage= new MyPageInProjectB(); 

但我怎麼表現呢?

我想要做到以下幾點: 我有兩個項目,我想在另一個項目中顯示一個項目的頁面並在它們之間傳遞數據。所以我認爲這將是完美的:

public partial class MyPageInProjectA : PhoneApplicationPage 
{ 
    private MyPageInProjectB bPage; 

    public MyPageInProjectA() 
    { 
     InitializeComponent(); 

     MyComplexObject objectIWantToPassToOtherPage = new MyComplexObject(); 

     bPage= new MyPageInProjectB (objectIWantToPassToOtherPage); 
    } 

    private void ShowBPageButton_Click(object sender, EventArgs e) 
    { 
     // this is now what I want to do, but what doesn't work 
     bPage.Show(); 
    } 
} 

還是有另一種方式來傳遞這些網頁之間的複雜數據?

我不想使用查詢字符串,因爲它有時會發生(De-)串行器與MyComplexObject有問題。

我讀了如何在這個線程中的兩個頁面之間導航:How to redirect to a page which exists in specif project to another page in other project in the same solution? 但我想將一個複雜的對象從一個頁面傳遞到另一個頁面。我怎樣才能做到這一點?

+0

這兩個項目的Windows Phone應用程序項目? –

+0

在這一點上:沒有。項目A是一個Windows手機應用程序,另一個('ProjectB')是一個類庫。但我可以改變這一點,如果它會更好。 –

+0

Hmm @ Rico-E你需要使用Navigate,因爲Alaa的答案是指定的。 '.Show()'不起作用。 –

回答

3

編輯: 好吧,現在仔細閱讀你的問題後,我可以給你一個更好的答案。

首先,你不能將數據傳遞到頁面的構造函數,因爲導航時運行本身處理實例的創建,你只能使用NavigationService導航。但是,您有其他選擇。

其中之一是使用查詢字符串,但如果你不想使用,你可以使用PhoneApplicationService來存儲您的複雜對象,並有從中讀取其他頁面。

// In source page 
MyComplexObject objectIWantToPassToOtherPage = new MyComplexObject(); 
PhoneApplicationService.Current.State["MyComplexObject"] = objectIWantToPassToOtherPage; 
NavigationService.Navigate(new Uri("/ProjectB;component/MyPageInProjectB.xaml", UriKind.Relative)); 

// In destination page's constructor 
public MyPageInProjectB() { 
    var myComplexObject = (MyComplexObject) PhoneApplicationService.Current.State["MyComplexObject"]; 
    // ... 
} 

除此之外,使用全局變量。這些是我能想到的唯一選擇。


要瀏覽的網頁中的類庫ProjectB你需要使用URI類似於以下:

/{assemblyName};component/{path}

在你的情況,你可以做到以下幾點:

NavigationService.Navigate(new Uri("/ProjectB;component/MyPageInProjectB.xaml", UriKind.Relative));

請注意,我在此指定相對路徑,所以MyPageInProjectB.xaml需要要在ProjectB裏面的根文件夾中爲上面的例子工作。

+1

對不起,但這實際上沒有答案。我想在兩頁之間傳遞一個對象。導航本身沒有問題。 –

+0

對不起,我沒有仔細閱讀這個問題! –

+1

非常感謝您的時間!這在我看來好像這是一個非常好的解決方案。以抽象的方式,它非常類似於http://stackoverflow.com/questions/13654379/how-do-i-pass-non-string-parameters-between-pages-in-windows-phone-8。我會試一試。非常感謝你! –

相關問題