这个问题以前可能会问到,但我找不到任何适合我需求的解决方案。 我有一个要求,即在WPF应用程序中打印报告,在WPF应用程序中,我使用的是棱镜模块化方法。我为该报告编写了一个用户控件,并将其与ViewModel绑定。使用MVVM Prism打印WPF视觉
在打印命令上,我通过使用下面的代码获取查看。
var view = ServiceLocator.Current.GetInstance<SalesInvoiceReport>();
并使用以下代码将此视图传递给PrintDialog。
if (pd.ShowDialog() == true)
{
Size pageSize = new Size(pd.PrintableAreaWidth - 20, pd.PrintableAreaHeight - 20);
pd.PrintVisual(view, "A Scaled Drawing");
view.Background = null;
view.LayoutTransform = null;
}
PrintDialog打印视图,但其不在报表上显示任何数据。 我做错了什么?据我猜测ViewModel无法正常工作。 我从下面的代码中得到的想法,因为我通过这种方式在应用程序中添加视图。
var view = ServiceLocator.Current.GetInstance<Medicose.Navigation.View.NewOrder>();
IRegion region1 = this._regionManager.Regions[RegionNames.MainRegion];
region1.Add(view);
if (region1 != null)
{
region1.Activate(view);
}
但是这里我不想在区域添加视图,我希望它直接打印为报告。请纠正我或给我想法,如果我做错了。我是新的在开发WPF PRISM应用程序开发。
编辑---
public partial class SalesInvoiceReport : UserControl
{
public SalesInvoiceReport(Medicose.Navigation.ViewModel.Reports.SalesInvoiceReportViewModel model)
{
InitializeComponent();
this.DataContext = model;
}
}
视图模型....
public sealed class SalesInvoiceReportViewModel:ViewModelBase
{
#region private members
private EntityFContext context;
private IProductsService productsservice;
private static readonly int orderNumber;............
请问如何在创建打印时设置此视图的'DataContext'。 XAML? DI? – dymanoid 2015-03-02 17:33:10
请检查编辑的代码... – Wasif 2015-03-02 19:25:56
我看到您在该视图中使用依赖注入。 Prism使用哪个IoC容器? MEF/Unity /其他?你有没有试图在你的视图的参数化构造函数中设置一个断点来检查它是否真的被调用? – dymanoid 2015-03-02 19:49:52