كيفية الحفاظ على الصفحة بالحالة الكاملة في تطبيق التنقل wpf

StackOverflow https://stackoverflow.com/questions/860866

  •  21-08-2019
  •  | 
  •  

سؤال

أقوم بإنشاء تطبيق WPF باستخدام الصفحات وخدمة التنقل.
تأخذ إحدى الصفحات كائنًا كمنشئ

Sub New(ByVal o As Object)
    ' This call is required by the Windows Form Designer.
    InitializeComponent()

    ....

لذلك، للانتقال إليها أفعل

    Dim MyPage As New Page1(MyObject)
    MyBase.NavigationService.Navigate(MyPage)

تحدث المشكلة عندما أقوم بتحرير شيء ما في الصفحة، ثم أعود، وعند إعادة التوجيه إلى MyPage، أحصل على الخطأ التالي:

 Cannot create object of type 'Page1'. CreateInstance failed, which can be 
 caused by not having a public default constructor for 'Page1'.  

ما الخطأ الذي افعله؟

هل كانت مفيدة؟

المحلول

يتعين عليك إخبار التطبيق المضيف أن الصفحة يجب أن تظل موجودة في الذاكرة، بدلاً من "إلغاء تحميلها" في كل مرة تنتقل فيها بعيدًا و"إعادة تحميلها" عندما تعود إليها.يبدو أن هذا سهل جدًا:فقط قم بإضافة حافظ على حياتك السمة إلى إعلان صفحتك:

<Page x:Class="..." KeepAlive="True">

ومن المثير للاهتمام أن وثائق MSDN تقول هذا:

يتم إبقاء الصفحات التي تم إنشاء مثيل لها وتنقلها إلى استخدام الكود فقط (على سبيل المثال ، استدعاء التنقل) ، تلقائيًا على قيد الحياة.

لم أجد أن هذا هو الحال، ومن سؤالك يبدو أنك لا تجد الأمر بهذه الطريقة أيضًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top