使用 MVVM Prism 打印 WPF 视觉效果

print WPF visual using MVVM Prism

以前可能有人问过这个问题,但我找不到适合我要求的解决方案。 我要求在 WPF 应用程序中打印报告,在 WPF 应用程序中我使用 Prism 模块化方法。我已经为报表编写了一个用户控件并将其与 ViewModel 绑定。

在打印命令中,我使用以下代码获取视图。

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);
}

但是这里我不想在区域中添加视图,我希望它直接打印为报告。如果我正在做,请纠正我或给我一些想法 wrong.I 是开发 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;............

谢谢大家,这是我的错误,我无法想象会发生在我身上,实际上我调用了用于报告打印的 ViewModel 的构造函数,但我没有调用该方法来填充报告内容。但是我对在这件事上发生的其他问题感到困惑,那就是获取 OrderId。 我制作了一个 public 静态字段以从 NewOrderViewModel 获取订单号。 NewOrderViewModel 有 print 命令。我通过在 ReportViewModel 中创建一个静态字段来设置订单 ID 的值。我这样做是对还是错?请纠正我的最佳做法,我也尝试使用依赖项 属性 但我无法通过使用 dependencyProperty 在 vi​​ewModel 中获取值。

B.R