0

アプリの MainPage の子ページからデータを渡したいです。問題は、MainPage に移動するスプラッシュ ロード画面があり、「子ページから移動した場合」ブロックを記述して OnNavigatedTo に含めることです。

ここに私の MainPage.xaml.cs コードがあります:

    protected override void OnNavigatedTo(NavigationEventArgs args)
    {
        if (base.OnNavigatedFrom(args) = ChildPage)
        {
        //    Code for: If navigated from child page
            ReturnData returnData = args.Parameter as ReturnData;
            this.myNewString = returnData.myString;
        }
        base.OnNavigatedTo(args);
    }
4

1 に答える 1

1

Windows 8 アプリの別のページにデータを渡すことによって使用される方法でデータを返すことができないことがわかりました。渡した方法でデータを返すことはできません。つまり、 this.Frame.Navigate(typeof(MainPage), passData); 解決策として、 'Completed'

イベントを作成し、それを MainPage C# コード ビハインドから呼び出しました。

MainPage.xaml.cs :

    protected override void OnNavigatedFrom(NavigationEventArgs args)
    {
        if (args.SourcePageType.Equals(typeof(ChildPage)))
            (args.Content as ChildPage).Completed += OnChildPageCompleted;
        base.OnNavigatedFrom(args);
    }

    void OnChildPageCompleted(object sender, ReturnData args)
    {
        // Code to run if returned back to MainPage from ChildPage
        this.myNewString = returnData.myString;
        (sender as ChildPage).Completed -= OnChildPageCompleted;
    }

ReturnData.cs :

namespace MyTestApp
{
    class ReturnData
    {
        public String myString { set; get; }
    }
}

ChildPage.xaml.cs :

public event EventHandler<ReturnData> Completed;

ChildPage.xaml.cs :

protected override void OnNavigatedFrom(NavigationEventArgs args)
{
    if (Completed != null)
    {

        // Create ReturnData object
        ReturnData returnData = new ReturnData();

        returnData.myString = newStringChanged;

        // Fire Completed event
        Completed(this, returnData);
    }

    base.OnNavigatedFrom(args);
}
于 2013-04-26T13:21:53.097 に答える