4

別のプロジェクトからインスタンス化することは可能ですかPhoneApplicationPage(同じソリューション内ですが、これは重要ではありませんか?)、それを表示しますか?

さて、私は別のページをインスタンス化できることを知っています:

MyPageInProjectB bPage= new MyPageInProjectB ();

しかし、どうすればそれを表示できますか?

次のことをしたい: 2 つのプロジェクトがあり、一方のプロジェクトのページを他方のプロジェクト内に表示し、それらの間でデータを渡したい。だから私はこれが完璧だと思った:

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-)Serializer で問題が発生することが時々あるため、クエリ文字列を使用したくありませんMyComplexObject

このスレッドで両方のページ間を移動する方法を読みました:特定のプロジェクトに存在するページに、同じソリューション内の他のプロジェクトの別のページにリダイレクトする方法は? しかし、あるページから別のページに複雑なオブジェクトを渡したいと思っています。どうやってやるの?

4

1 に答える 1

3

編集:わかりました、あなたの質問を注意深く読んだ後、私はあなたにより良い答えを与えることができます.

まず、ナビゲート時にランタイム自体がインスタンスの作成を処理し、 を使用してのみナビゲートできるため、データをページ コンストラクターに渡すことができませんNavigationService。ただし、他のオプションがあります。

そのうちの 1 つはクエリ文字列を使用していますが、使用したくない場合は、それを使用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

于 2013-07-04T13:57:15.090 に答える