アプリケーションはデスクトップドキュメント管理システムです。(スキャンされたドキュメントの)画像ファイルは、共有ネットワークフォルダー内に保存され、そのインデックスはデータベース内に保存されます。これで、選択したドキュメントページの画像が表示されたときに、ユーザーはそれを削除するオプションがあります(コンテキストメニューを使用)。問題は、これを実行しようとすると、画面に表示されていることを考えると、すべての意味を持つ例外(リソースがロックされている)がスローされることです。そのため、現在、永続的な削除キューを維持しています。アプリが起動したら、キューに移動して、インデックスがDBから削除され、表示されていないドキュメントのページを削除します。削除は成功しますが、これはかなり悪いコードのようです(つまり、機能しますが、そうではありません)必要なだけきれいだと思います)。
私の迅速な解決策はどれほど悪いか。アプリがシングルユーザーである場合、ユーザーはアプリを使用するためにスターを付ける必要があります。これは非常に悪い考えですか、それとも別のパスを使用して実装できますか?
画像は、現在のファイルにバインドすることで(ドキュメントビューア内に)表示されます。
意見:
<Image Name="PageViewedPath" Margin="20" Grid.Column="0" />
ViewModel:
public string PageViewedPath { get; set; }
そして、ユーザーが次または前をクリックすると、変更します(ViewModel内でPageViewedPath)。おそらく問題は、私が詳細に制御できないこのバインディングです。私はCaliburn Microを使用しているので、画像名を設定するだけでバインディングが実行されます。
このバインディングをオーバーライドして、表示される前に画像のハードコピーを作成することはうまくいくはずだと思いますが、それがうまくいくかどうか、さらに悪いことに、それを行う方法はわかりません。