想想一個WPF程序,它有2個頁面,您可以在它們之間導航。 (上傳和裁剪)WPF失敗。使用WPF頁面作爲實例
在第一頁中,您使用按鈕加載圖像,選擇圖像,並且圖像出現在WPF圖像控件中。然後,按下「裁剪」按鈕。這將導航發送到第二頁,您可以裁剪圖像。
然後,在第二頁中裁剪圖像。然後你按下「下一個」。下一步按鈕必須將您重定向到第一頁,但稍等片刻,您加載的圖像不再存在於頁面中。因爲這是一個新的頁面。
Dim CropPage As New Crop(Crop_Bmp, Crop_BmpSource)
Me.NavigationService.Navigate(CropPage)
您可能認爲沒關係。因爲我們傳遞了參數,我們可以使用該參數來填充WPF圖像控件。但是,頁面1實際上有8個上傳面板。所以,其他的很重要。
或想想我發現的另一種方法。不要使用新的頁面實例,請返回您使用的頁面。
Upload.Crop_Bmp = Crop_Bmp
Upload.Crop_BmpSource = Crop_BmpSource
Me.NavigationService.GoBack()
Upload.Crop()
但在第二個,它會引發錯誤。
「對非共享成員的引用需要對象引用。」
然後回到上傳頁面,我做了變量和函數「共享」。但是,隨後出現更多問題。因爲你不能編輯局部變量,除非你讓它們共享。所以,所有的變量和函數都需要「共享」。
我正在尋找解決方案几天,我無法擺脫它們。我應該使用什麼方法?重新導向,或打開新的實例?
在舊式應用中,這非常簡單。全部是:
Form1.Crop_Bmp = Crop_Bmp
Me.Hide()
Form1.Crop()
它的工作完美。因爲表單不是WPF頁面的實例。這就是我發現WPF很奇怪的原因。
「你發現WPF很怪異」,因爲你使用的是winforms思維模式。忘記你在winforms中學到的所有東西,並開始學習MVVM模式。否則,你將在WPF中失敗。並不要責怪WPF。 –
哦,並開始在C#中編碼。 VB.Net是一種玩具語言。 –