11

最近のドキュメント履歴を表示する必要がある C# で WPF アプリケーションを作成しています (Word、Excel、さらには Visual Studio で発生するのと同じように)、最後に開いた 5 つまたは 10 個のドキュメントのリストを表示します。どうすればいいのか全く見当がつきません。助けてください。そして、親切で優しくしてください...私はアマチュアのコーダーであり、今のところハイテクの話を消化するのは難しいです! :)

4

6 に答える 6

9

WPF4 の JumpListは素晴らしいです。これは私がする必要があったすべてです:

<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>
于 2010-05-12T05:51:53.787 に答える
4

これにはかなり良いウォークスルーとサンプルがあります

http://www.codeproject.com/KB/WPF/RecentFileList.aspx

xml ファイルとレジストリ ストアの両方があるのは良いことです。

于 2011-03-14T03:24:27.063 に答える
3

この問題を(初心者として)解決する私の考えは、すべてのファイルパスを指定された最大容量のキューに保持し、実行時にそれらをメニューアイテムに追加することでした...

于 2012-04-02T18:50:50.690 に答える
2

ユーザーが開いたドキュメントのリストを保持することができます。プログラムの終了時にリストを保存し、プログラムの起動時にロードします。おそらく、プログラム設定にリストを保存するか、ファイルに書き込むことができます(プレーンテキストまたはxmlで問題ありません)。

「最近のドキュメント」への参照を保持し、そのコレクションからMenuItemを追加および削除することにより、「最近のドキュメント」のサブメニューを動的に作成する必要があります。ここでそれについての議論があります: Add new menuitem to menu at runtimeMenuItemItems

上で Shoban によってリンクされたライブラリは、これを行う一連のクラスのように見えます。しかし、それはwinforms用です。wpf を使用している場合は、独自のものを作成する必要があるかもしれません (ただし、どこかに既製のものがある可能性があります)。

Windows API Code Pack for .Netを使用して、win7 のタスクバーでジャンプリストを作成することもできます。

于 2010-03-08T08:12:11.200 に答える
1

WPF Application Framework (WAF)のWriterサンプル アプリケーションに興味があるかもしれません。ファイルメニューとスタートページに表示される最近のファイルリストを使用および実装する方法を示します。

于 2011-05-22T08:38:09.973 に答える
1

ガガン、私は最近、WPF C# で最近のファイル メニューを作成しました。

-> ジャンプリスト機能とスタート メニューの最近のファイル メニューを有効にするために、次のような Windows API シェル ルーチンを使用しました。

[DllImport("shell32.dll")] //ジャンプリストと recenfile を有効にするシェル ルーチン public static extern void SHAddToRecentDocs( UInt32 uFlags, [MarshalAs(UnmanagedType.LPWStr)] String pv);

次のように呼び出します: SHAddToRecentDocs(0x00000003, mFilePath);

->次に、最近のファイルメニューを表示するために、xmlファイルを使用し、その中に最近のファイルを保存し、最近のファイルを解析してメニューに表示しました。

于 2010-07-19T08:35:26.287 に答える