منع إطار WPF من تخزين التاريخ في المكدس
-
21-09-2019 - |
سؤال
يبدو أن هذا سيكون حلاً سهلاً ، لكنني أضيع الكثير من الوقت في محاولة لمعرفة ذلك. ربما أقوم بتصميم طلبي بشكل غير صحيح (والتي قد تكون كذلك) ، لذا يرجى مساعدتي إذا كان لديك حل أفضل.
أقوم بتصميم تطبيق WPF على مستوى المؤسسة يشبه إلى حد كبير Outlook مع أ Ribbon
بدلا من شريط الأدوات. لدي الكثير من الوحدات المختلفة التي يتم تحميلها في إطار عندما ينقر المستخدم على أ RibbonButton
. ضع في اعتبارك أن شريطه مشترك يتراكم جميع الوحدات.
لذلك لدي قذيفة مع شريط وإطار. عندما ينقر المستخدم على زر الشريط ، فإنه يقوم بتحميل الوحدة النمطية المناسبة (UserControl) في الإطار. كل شيئ بخير. ومع ذلك ، إذا انتقلت إلى وحدة نمطية أخرى (من خلال النقر على شريط آخر) ، ثم انقر فوق الأصل RibbonButton
, ، لدي الآن حالتان من نفس الوحدة مفتوحة ... ولكن يتم عرض واحد فقط في الإطار ... الوحدة الأخرى في مكدس الإطار.
لذا فإن سؤالي هو ، كيف أخبر الإطار بإغلاق USERCONTROL عندما أتنقل إلى وحدة مختلفة؟ لقد حاولت تعيين ملف JournalEntry.KeepAlive="False"
, ، لكن هذا لا يزال لم ينجح. أي أفكار؟ ليس هناك الكثير من التعليمات البرمجية التي يجب نشرها ، لكن يمكنني القيام بذلك إذا كان ذلك سيساعدك.
المحلول
إذا لم تنوي أبدًا العودة إلى "العودة" إلى الإدخال السابق ، فيمكنك الاستخدام QualivationService.RemoveBackentry () لمسح التاريخ في كل مرة تتنقل فيها. أسهل طريقة للقيام بذلك هي التعامل مع الإطار حدث تنقل:
frame.Navigated += frame_Navigated;
void frame_Navigated(object sender, NavigationEventArgs e)
{
frame.NavigationService.RemoveBackEntry();
}