2010-02-17 31 views
7

Điều này có vẻ như nó sẽ là một giải pháp dễ dàng, nhưng tôi lãng phí quá nhiều thời gian để tìm ra điều này. Có lẽ tôi đang thiết kế ứng dụng của tôi không chính xác (có thể là trường hợp), vì vậy hãy giúp tôi nếu bạn có một giải pháp tốt hơn.Ngăn chặn khung WPF lưu trữ lịch sử trong ngăn xếp

Tôi đang thiết kế một ứng dụng WPF cấp doanh nghiệp trông rất giống Outlook với một Ribbon thay vì thanh công cụ. Tôi có rất nhiều mô-đun khác nhau được tải vào khung khi người dùng nhấp vào RibbonButton. Hãy nhớ rằng ruy-băng của mình được chia sẻ trên tất cả các mô-đun.

Vì vậy, tôi có vỏ có dải ruy băng và khung. Khi người dùng nhấp vào nút Ribbon, nó sẽ tải mô-đun thích hợp (usercontrol) vào khung. Mọi thứ đều tốt. Tuy nhiên, nếu tôi điều hướng đến một mô-đun khác (bằng cách bấm vào một RibbonButton), và sau đó bấm vào bản gốc RibbonButton, bây giờ tôi có hai trường hợp của cùng một mô-đun mở ... nhưng chỉ có một được hiển thị trong khung ... mô-đun nằm trong ngăn xếp của khung.

Vì vậy, câu hỏi của tôi là, làm thế nào để tôi nói cho khung để đóng usercontrol khi tôi điều hướng đến một mô-đun khác nhau? Tôi đã thử thiết lập các JournalEntry.KeepAlive="False", nhưng điều đó vẫn không hoạt động. Có suy nghĩ gì không? Có thực sự không có nhiều mã để đăng, nhưng tôi có thể làm như vậy nếu nó sẽ giúp bạn.

Trả lời

9

Nếu bạn không bao giờ có ý định "quay lại" mục nhập trước đó, bạn có thể sử dụng NavigationService.RemoveBackEntry() để xóa lịch sử mỗi khi bạn điều hướng. Cách dễ nhất để thực hiện điều đó là xử lý Frame của Navigated event:

frame.Navigated += frame_Navigated; 

void frame_Navigated(object sender, NavigationEventArgs e) 
{ 
    frame.NavigationService.RemoveBackEntry(); 
} 
+0

Điều gì xảy ra nếu tôi chỉ cần làm điều đó cho một điều hướng duy nhất? –

Các vấn đề liên quan