考虑一个有 2 个页面的 WPF 程序,您可以在它们之间导航。(上传和裁剪)
在第一页中,您使用按钮加载图像,选择图像,您的图像将出现在 WPF Image 控件中。然后,您按下“裁剪”按钮。这会将导航发送到第二页,您可以裁剪图像。
然后,您在第二页中裁剪图像。然后按“下一步”。下一步按钮必须将您重定向到第一页,但请稍等,您加载的图像不再存在于页面中。因为这是一个新的页面。
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()
但是在第二个中,它会引发错误。
“对非共享成员的引用需要对象引用。”
然后,回到上传页面,我将变量和函数设为“共享”。但随之而来的是更多的问题。因为您无法编辑局部变量,除非您也将它们设为共享。因此,所有变量和函数都需要“共享”。
我正在寻找几天的解决方案,但我无法摆脱它们。我应该使用什么方法?重定向回来,还是打开一个新实例?
在旧类型的应用程序中,这非常容易。就是这样:
Form1.Crop_Bmp = Crop_Bmp
Me.Hide()
Form1.Crop()
它运行良好。因为表单不是 WPF 页面之类的实例。这就是我觉得 WPF 很奇怪的原因。