سؤال

أنا أقوم ببناء تطبيق WP7 ، وأنا الآن في نقطة التعامل مع الجزء المقبل منه.

ما أقوم به هو حفظ ViewModel للصفحة في الصفحة من التطبيق).

أولاً ، كان VM الخاص بي مجرد غلاف لنموذج المجال

public string Nome
    {
        get
        {
            return _dm.Nome;
        }
        set
        {
            if (value != _dm.Nome)
            {
                _dm.Nome= value;
                NotifyPropertyChanged("Nome");
            }
        }
    }

لكن هذا لم ينجح دائمًا لأنه عند التوفير في الحقيبة ثم القراءة مرة أخرى ، لم يتم إلغاء تحديد نموذج المجال بشكل صحيح.

ثم قمت بتغيير تطبيق VM ليكون مجرد نسخة من الخصائص التي احتاجها من DM:

public string Nome
    {
        get
        {
            return _nome;
        }
        set
        {
            if (value !=nome)
            {
                _nome= value;
                NotifyPropertyChanged("Nome");
            }
        }
    }

ومع المُنشئ الذي لا يلي:

_nome = dm.Nome;

والآن يعمل ، لكنني لم أكن متأكدًا مما إذا كان هذا هو النهج الصحيح.

شكرا سيمون

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

المحلول

يجب أن تستمر أي معلومات عن حالة عابرة في الحدث الذي تم تنشيطه ثم استعادته في التطبيق.

إذا كنت بحاجة إلى تخزين أي شيء بين جلسات التطبيق ، فيمكنك استخدام الحدث الذي يجب عليك استخدامه ، ولكن بناءً على ما تحتاج إلى تخزينه ، يمكنك تخزينه فقط كلما تغير. مرة أخرى ، بناءً على ما تحتاج إلى تخزينه ، يمكنك إما استعادته في الحدث.

يعتمد النهج الذي تتبعه بالكامل على متطلبات التطبيق الخاصة بك ، والطريقة والموقع الذي تقوم بتخزينه ، يعود عليك أيضًا (التسلسل الثنائي للتخزين المعزول مقبولًا عمومًا هو الأسرع).

لا أعرف تفاصيل التطبيق الخاص بك ، ولكن من غير المرجح أن يكون حفظ البيانات واستعادتها في SavigatedFrom/Savigatedto هي المكان المناسب للقيام بذلك إذا كنت تتطلع إلى تنفيذ دعم Tombstoning.

نصائح أخرى

أوصي بعدم عمل نسخة من النموذج كما هو الحال عند الحاجة إلى الاستمرار في كل من نموذج (مستوى التطبيق) الكامل ونسخة مستوى الصفحة عند التعامل مع Tombstoning.

ثانية يعتمد الحل الأنسب على تعقيد التطبيق الخاص بك والنماذج التي يستخدمها.

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