2 つのページ間を移動する WPF プログラムについて考えてみてください。(アップロードとクロップ)
最初のページで、ボタンを使用して画像を読み込み、画像を選択すると、画像が WPF Image コントロールに表示されます。次に、「トリミング」ボタンを押します。これにより、ナビゲーションが 2 ページ目に送信され、画像をトリミングできます。
次に、2 ページ目の画像をトリミングします。次に、「次へ」を押します。[次へ] ボタンをクリックすると最初のページにリダイレクトされますが、少し待ってください。読み込んだ画像はページに存在しません。新しいページだから。
Dim CropPage As New Crop(Crop_Bmp, Crop_BmpSource)
Me.NavigationService.Navigate(CropPage)
大丈夫と思うかもしれません。パラメーターを渡し、そのパラメーターを使用して WPF Image コントロールを再入力できるためです。しかし、実際にはページ 1 に 8 つのアップロード パネルがあります。したがって、他のパネルが重要です。
または、私が見つけた別の方法について考えてみてください。新しいページ インスタンスを使用する代わりに、使用したページに戻ります。
Upload.Crop_Bmp = Crop_Bmp
Upload.Crop_BmpSource = Crop_BmpSource
Me.NavigationService.GoBack()
Upload.Crop()
しかし、2番目のものでは、エラーがスローされます。
「非共有メンバーへの参照には、オブジェクト参照が必要です。」
次に、アップロードページに戻り、変数と関数を「共有」にしました。しかし、その後、さらに問題が発生します。ローカル変数も共有にしない限り、ローカル変数を編集できないためです。したがって、すべての変数と関数を「共有」する必要があります。
数日間解決策を探していますが、それらを取り除くことができませんでした。どのような方法を使用すればよいですか? リダイレクトするか、新しいインスタンスを開きますか?
古いタイプのアプリケーションでは、非常に簡単でした。すべてはそれでした:
Form1.Crop_Bmp = Crop_Bmp
Me.Hide()
Form1.Crop()
そして、それは完璧に機能していました。フォームは WPF ページのようなインスタンスではなかったからです。それが、私が WPF を非常に奇妙に感じる理由です。