0

次の要件があります。4ページあります。最初の 3 ページではユーザーに情報を入力するように求め、最後に 4 ページ目で何らかの処理を行って結果を表示します。

私はこのアプローチを思いつきました。ユーザーがさまざまなページに入力するすべてのフィールドを持つクラスを作成しました

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: 'initializing': cannot convert from 'Platform::Object ^' to 'CameraWiFiInfo ^' というエラーが表示されます。

ある XAML ページから別の XAML ページにデータを渡すための適切な C++/Win Rt XAML の例を取得できませんでした。

4

1 に答える 1

0

明示的なキャストが必要です:

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

ただし、ドキュメントによると、これを行うときは注意してください。

を使用してフレームの状態のシリアル化を有効にするには、GetNavigationState文字列、文字、数値、GUID 型などの基本型のみをこのメソッドに渡す必要があります。[…] 一般に、非基本型をパラメーターとして に渡すことはお勧めしません。Navigateこれは、アプリケーションが中断されたときにシリアル化できず、より多くのメモリを消費する可能性があるためです […]

于 2013-02-05T09:36:22.150 に答える