這個問題以前可能會問到,但我找不到任何適合我需求的解決方案。 我有一個要求,即在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