该应用程序是一个桌面文档管理系统。(扫描文档的)图像文件存储在共享网络文件夹中,其索引存储在数据库中。现在,当显示所选文档页面的图像时,用户可以选择删除它(通过上下文菜单)。问题是,如果我尝试这样做,那么它会抛出一个异常(资源被锁定),鉴于它正在屏幕上显示,它具有所有意义。所以,目前我维护一个持久删除队列。应用程序启动后,我进入队列并删除其索引已从数据库中删除的文档的页面,并且鉴于它们未显示删除成功,但这似乎是非常糟糕的代码(我的意思是它有效,但不是我猜应该尽可能干净)。
我的快速解决方案有多糟糕。鉴于该应用是单用户应用,因此用户需要为该应用加注星标才能使用它。这是一个非常糟糕的主意还是我可以使用其他路径来实现。
通过将图像绑定到当前文件来显示图像(在文档查看器中):
看法:
<Image Name="PageViewedPath" Margin="20" Grid.Column="0" />
视图模型:
public string PageViewedPath { get; set; }
一旦用户单击下一个或上一个,我就会更改(在 ViewModel 中的 PageViewedPath)。也许问题是我无法详细控制的绑定,我使用的是 Caliburn Micro,所以这就是为什么只需设置图像名称即可完成绑定。
我认为也许覆盖此绑定并在显示之前创建图像的硬拷贝必须有效,但我不确定它是否会,更糟糕的是,如何做到这一点。