0

我有以下要求,我有 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 中传递数据,请就此提出建议。

4

1 回答 1

0

你需要一个明确的演员:

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

但是根据文档,这样做时要小心:

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

于 2013-02-05T09:36:22.150 回答