سؤال

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

أقوم بتصميم تطبيق 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();
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top