2010-03-08 27 views
10

Tôi đang tạo một Ứng dụng WPF trong C# nơi tôi cần hiển thị lịch sử tài liệu gần đây (giống như nó xảy ra trong từ, excel và thậm chí cả studio trực quan), hiển thị danh sách 5 hoặc 10 tài liệu cuối cùng đã được mở. Tôi hoàn toàn không có ý tưởng làm thế nào tôi nên đi về nó. Hãy giúp tôi. Và hãy tử tế và dịu dàng ... Tôi là một coder amatuer, và thật khó để tiêu hóa các cuộc đàm phán công nghệ cao như bây giờ! :)Cách tạo Lịch sử Tài liệu Gần đây trong C# trong Ứng dụng WPF

+0

Bạn có kiểm tra lớp [MRUManager] (http://www.codeproject.com/KB/cs/mru.aspx) không? – Shoban

+0

Như tôi đã nói .... Tôi là một người lập trình nghiệp dư .... hãy giúp tôi hiểu lớp MRUManager và những gì nó làm. Cảm ơn. – Gagan

+0

Bạn đã kiểm tra bài viết từ vựng mà tôi đã liên kết chưa? – Shoban

Trả lời

2

Bạn chỉ có thể giữ một danh sách các tài liệu mà người dùng mở. Lưu trữ danh sách khi chương trình thoát và tải nó khi chương trình khởi chạy. Bạn có thể lưu trữ một danh sách những thứ trong cài đặt chương trình, hoặc bạn có thể ghi nó vào một tập tin (văn bản thuần hoặc xml sẽ hoạt động ok).

Bạn sẽ phải tạo menu phụ cho "tài liệu gần đây" động bằng cách giữ tham chiếu đến "tài liệu gần đây" MenuItem, sau đó thêm và xóa MenuItem s khỏi bộ sưu tập Items. Có một cuộc thảo luận về điều đó ở đây: Add new menuitem to menu at runtime.

Thư viện được liên kết ở trên bởi Shoban trông giống như một tập hợp các lớp làm việc này cho bạn. Nhưng, đó là cho winforms. Nếu bạn đang sử dụng wpf, bạn có thể phải viết của riêng bạn (mặc dù có thể có sẵn những người ra khỏi đó một nơi nào đó), nhưng một trong những winforms sẽ cung cấp cho bạn một nơi bắt đầu tốt.

Bạn cũng có thể tạo jumplists trong thanh tác vụ của win7 bằng cách sử dụng Windows API Code Pack for .Net.

8

JumpList in WPF4 thật tuyệt vời. Đây là tất cả những gì cần thiết để làm:

<Application 
    x:Class="MyApp" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    <Application.Resources> 
    </Application.Resources> 
    <JumpList.JumpList> 
     <JumpList ShowRecentCategory="True"/> 
    </JumpList.JumpList> 
</Application> 
+0

JumpList cho WinForm là gì? – CallMeLaNN

+0

-1 Đây không phải là câu trả lời. JumpList liên quan đến MRU như thế nào? – KMC

+0

@kmc Vì JumpList (mã được hiển thị) hiển thị danh sách các tài liệu được sử dụng gần đây nhất, bạn webby;) –

1

Gagan, tôi vừa mới thực hiện một trình đơn tập tin gần đây trong WPF C# và đây là những gì tôi đã làm:

-> để bật chức năng jumplist và thanh menu khới gần đây trình đơn tập tin tôi được sử dụng thường xuyên vỏ windows API như thế này:

[DllImport ("shell32.dll")] // thói quen vỏ để cho phép jumplist và recenfiles public static extern void SHAddToRecentDocs ( UInt32 uFlags, [MarshalAs (UnmanagedType.LPWStr)] St vòng pv);

và gọi nó như sau: SHAddToRecentDocs (0x00000003, mFilePath);

-> Sau đó, để hiển thị trình đơn tệp gần đây tôi đã sử dụng tệp xml, tệp được lưu trữ gần đây trong tệp đó và được phân tích cú pháp và hiển thị tệp gần đây trong menu.

1

Bạn có thể quan tâm đến ứng dụng mẫu Writer mẫu WPF Application Framework (WAF). Nó cho thấy cách sử dụng và triển khai danh sách tệp gần đây được hiển thị trong menu tệp và trên trang bắt đầu.

2

Ý tưởng giải quyết vấn đề này (như người mới bắt đầu) là giữ lại tất cả các đường dẫn tệp vào một Hàng đợi có công suất tối đa nhất định và thêm chúng vào thời gian chạy vào menuItem ...

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