2

私はdataという名前のオブジェクトを持っています。以下のクラスのオブジェクトです

[DataContract]
public class Details
{
    [DataMember(Name = "code")]
    public int Code { get; set; }

    [DataMember(Name = "message")]
    public string Message { get; set; }

    [DataMember(Name = "values")]
    public values values { get; set; }
}

ここで、値は変数を持つ別のクラスです。

ここで、オブジェクト データを別の 2 ページに送信したいと考えています。

NavigationService.Navigate(new Uri("/Folder/page2.xaml?object="+ data,UriKind.Relative));

そして、私は以下のようにそれを受け取ります

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        if (e.Uri.OriginalString.Contains("object"))
        {
            string data = NavigationContext.QueryString["object"];
            MessageBox.Show(data); 
        }
    }

しかし、上記のメソッドを実行している間、データ変数に格納されている値は

Projectname.Foldername.Filename

オブジェクトにその値を渡すにはどうすればよいですか??

4

2 に答える 2

2

URI で複雑なオブジェクトを渡すのは良い考えではないと思います。私のアドバイスは、次のコードで NavigationService クラスを拡張することです。

public static class NavigationExtensions
{

private static object _data= null;

public static void Navigate(this NavigationService service, string page, object data)
{
    _data = data;
    service.Navigate(new Uri(page, UriKind.Relative));
}

public static object GetLastNavigationData(this NavigationService service)
{
    object data = _data;
    _data = null;
    return data;
} }

NavigationService.Navigate("/Folder/page2.xaml", data);ナビゲートしvar data= NavigationService.GetLastNavigationData()て値を取得するために呼び出します

于 2013-10-24T09:13:33.767 に答える