0

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 を非常に奇妙に感じる理由です。

4

2 に答える 2

0

私はそれを行う方法を見つけました。切り抜きページに移動するときに、アップロードページをパラメーターとして切り抜きページに送信しました。

    Dim CropPage As New Crop(Crop_Bmp, Crop_BmpSource, Me)
    Me.NavigationService.Navigate(CropPage)

次に、Cropで:

Public Sub New(ByVal Crop_Bitmap_ As Bitmap, ByVal Crop_BitmapSource_ As BitmapSource, ByVal pg As Upload)

    ' This call is required by the designer.
    InitializeComponent()

    UploadPage = pg

次に、[切り抜き]ページで、そのパラメーターにアクセスして要素を変更しました。例えば:

    Me.NavigationService.Navigate(UploadPage)
    UploadPage.Crop()
于 2012-12-03T00:48:44.233 に答える