我可以使用現有的WPF(XAML)控件將其數據綁定並將其轉換爲可使用WPF XPS文檔查看器顯示和打印的XPS文檔? 如果是這樣,怎麼樣? 如果不是,我應該如何使用XPS/PDF /等在WPF中進行「報告」?將WPF(XAML)控件轉換爲XPS文檔
基本上我想採取一個現有的WPF控件,數據綁定它獲得有用的數據,然後使其可打印和可保存爲最終用戶。理想情況下,文檔創建將在內存中完成,除非用戶專門保存了文檔,否則不會觸及磁盤。這是可行的嗎?
我可以使用現有的WPF(XAML)控件將其數據綁定並將其轉換爲可使用WPF XPS文檔查看器顯示和打印的XPS文檔? 如果是這樣,怎麼樣? 如果不是,我應該如何使用XPS/PDF /等在WPF中進行「報告」?將WPF(XAML)控件轉換爲XPS文檔
基本上我想採取一個現有的WPF控件,數據綁定它獲得有用的數據,然後使其可打印和可保存爲最終用戶。理想情況下,文檔創建將在內存中完成,除非用戶專門保存了文檔,否則不會觸及磁盤。這是可行的嗎?
與不同樣品的堆,所有這一切都是令人難以置信的令人費解,並要求使用文檔作家,容器,打印隊列和打印門票亂搞後其實,我發現埃裏克匯文章關於Printing in WPF
簡化代碼是僅10線長
public void CreateMyWPFControlReport(MyWPFControlDataSource usefulData)
{
//Set up the WPF Control to be printed
MyWPFControl controlToPrint;
controlToPrint = new MyWPFControl();
controlToPrint.DataContext = usefulData;
FixedDocument fixedDoc = new FixedDocument();
PageContent pageContent = new PageContent();
FixedPage fixedPage = new FixedPage();
//Create first page of document
fixedPage.Children.Add(controlToPrint);
((System.Windows.Markup.IAddChild)pageContent).AddChild(fixedPage);
fixedDoc.Pages.Add(pageContent);
//Create any other required pages here
//View the document
documentViewer1.Document = fixedDoc;
}
我的樣品是相當簡單的,它不包括頁面大小和方向包含一套完全不同的你所期望的,不工作的問題。 它也不包含任何保存功能,因爲MS似乎忘記了在文檔查看器中包含保存按鈕。
保存功能是相對簡單的(並且也爲埃裏克匯文章)
public void SaveCurrentDocument()
{
// Configure save file dialog box
Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
dlg.FileName = "MyReport"; // Default file name
dlg.DefaultExt = ".xps"; // Default file extension
dlg.Filter = "XPS Documents (.xps)|*.xps"; // Filter files by extension
// Show save file dialog box
Nullable<bool> result = dlg.ShowDialog();
// Process save file dialog box results
if (result == true)
{
// Save document
string filename = dlg.FileName;
FixedDocument doc = (FixedDocument)documentViewer1.Document;
XpsDocument xpsd = new XpsDocument(filename, FileAccess.ReadWrite);
System.Windows.Xps.XpsDocumentWriter xw = XpsDocument.CreateXpsDocumentWriter(xpsd);
xw.Write(doc);
xpsd.Close();
}
}
因此,答案是肯定的,你可以利用現有的WPF(XAML)控制,數據綁定,並把它變成一個XPS文件 - 並不是那麼困難。
您能否提供MyWPFControl和MyWPFControlDataSource的定義?沒有它們的示例代碼是毫無價值的,並且Sinks文章似乎沒有包含它們。 – 2009-12-14 21:58:10
[http://msdn.microsoft.com/en-us/library/system.windows.xps.visualstoxpsdocument.aspx](http://msdn.microsoft.com/en-us/library/system.windows .xps.visualstoxpsdocument.aspx) – 2009-02-02 05:20:17