如何使用MVVM实现打印操作

时间:2014-05-07 13:05:36

标签: wpf mvvm

在我的视图模型中,我有一个命令,它使用PrintDialog类的PrintVisual实现打印操作。因为我无法访问视图,所以我无法打印它。应该如何解决这个问题?

是否有更简单,更好的方法?

2 个答案:

答案 0 :(得分:0)

我认为您的解决方案是通过一个服务类来执行打印网格的工作,显示一个对话框,以及完成工作所需的任何工作。

在MVVM中,大多数人使用依赖注入来执行此操作。您将使用相同的接口创建另一个服务,以便您的测试不会阻止执行。在这种情况下,服务是一个视图层服务,并且应该没有依赖于视图模型。 viewmodel唯一知道的是它有一个服务接口可以调用,而服务对viewmodel唯一知道的就是它为这种交互实现的接口。

我读过过去帮助过我的维基百科文章:

SOLID - Wikipedia

如果这是有道理的,请告诉我。

答案 1 :(得分:0)

这就是我解决它的方式。 我在viewmodel中创建了一个事件。每当我想要打印操作时,就在这里举起活动。

我在mainwindow.xaml中定义了我的侦听器方法(这是我定义了我的内容演示者,所有数据模板都分配给了这个contentpresenter.content) 在这个监听器方法中,我使用PrintDialog类的PrintVisual调用打印操作。

<!/ P>