在XAML页面之间传递参数

时间:2013-02-05 07:00:37

标签: winrt-xaml windows-store-apps c++-cx

我有以下要求,我有4页。前3页提示用户输入一些信息,最后在第四页上我做了一些处理并显示结果。

我提出了这种方法。我创建了一个类,所有现场用户都可以在各种页面中输入

ref class CameraWiFiInfo sealed
{

   public:
   property String^ sCameraName;
   property String^ sWiFIName;
   property String^ sWifiPassword;
   CameraWiFiInfo()
   {
    sCameraName = ref new String;
    sWiFIName = ref new String;
    sWifiPassword = ref new String;
   }
};

我正在尝试传递此对象,如下所示

  PAGE #1
    CameraWiFiInfo^ cameraInfo = ref new CameraWiFiInfo();
    cameraInfo->sCameraName = txtCameraName->Text;
    this->Frame->Navigate(TypeName(WifiCheck::typeid),cameraInfo);

  PAGE#2
  void Page2::OnNavigatedTo(NavigationEventArgs^ e)
  {
       (void) e;    // Unused parameter
       CameraWiFiInfo^ cameraInfo= e->Parameter ;


  }

我在这里收到错误错误C2440:'初始化':无法转换为' Platform :: Object ^'到了CameraWiFiInfo ^'。

我在网上瞪眼我没有得到任何合适的C ++ / Win Rt XAML示例来将数据从一个XAML页面传递到另一个。如果有人试过数据传递C ++ / Win Rt请在此建议。

1 个答案:

答案 0 :(得分:0)

你需要一个明确的演员:

CameraWiFiInfo^ cameraInfo= (CameraWiFiInfo^)e->Parameter;

但是在执行此操作时要小心,根据the documentation

  

要使用GetNavigationState启用帧状态的序列化,必须仅将基本类型传递给此方法,例如字符串,字符,数字和GUID类型。 [...]通常,我们不鼓励将非基本类型作为参数传递给Navigate,因为它在应用程序暂停时无法序列化,并且可能消耗更多内存[...]