【问题标题】:print WPF visual using MVVM Prism使用 MVVM Prism 打印 WPF 视觉对象
【发布时间】:2015-03-02 15:17:24
【问题描述】:

之前可能会问过这个问题,但我找不到任何适合我要求的解决方案。 我需要在 WPF 应用程序中打印报告,在 WPF 应用程序中我使用 Prism Modular 方法。我已经为报表编写了一个用户控件并将其与 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);
}

但是这里我不想在区域中添加视图,我希望它直接打印为报告。如果我做错了,请纠正我或告诉我。我是开发 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?
  • 请检查编辑的代码...
  • 我看到您在该视图中使用了依赖注入。您将哪个 IoC 容器与 Prism 一起使用? MEF/团结/其他?您是否尝试在视图的参数化构造函数中设置断点以检查它是否实际被调用?
  • 我正在使用 Prism Unity..并且我已经在 Viewmodel 构造函数和 UserControl 的构造函数中设置了断点,两个构造函数都在调用但 datacontext 不起作用,我认为这个视图没有激活,怎么能无需添加任何区域即可激活此功能?是否可能(我不确定),但我认为 Region 是激活任何视图所必需的。

标签: c# wpf mvvm reporting prism


【解决方案1】:

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

B.R

【讨论】:

    猜你喜欢
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    • 2015-05-04
    • 1970-01-01
    • 2011-01-13
    相关资源
    最近更新 更多