Browse Source

ViewModel for WpfReportViewer

pull/15/head^2
peterforstmeier 14 years ago
parent
commit
26c5c6af70
  1. 17
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/WPF/WPFReportPreview.cs
  2. 3
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj
  3. 4
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/WpfReportViewer/ExportRunner.cs
  4. 63
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/WpfReportViewer/PreviewViewModel.cs
  5. 13
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/WpfReportViewer/WpfReportViewer.xaml
  6. 8
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/WpfReportViewer/WpfReportViewer.xaml.cs

17
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/WPF/WPFReportPreview.cs

@ -25,7 +25,7 @@ namespace ICSharpCode.Reports.Addin.Project.WPF
ReportDesignerLoader designerLoader; ReportDesignerLoader designerLoader;
IWpfReportViewer viewer = new WpfReportViewer(); IWpfReportViewer viewer = new WpfReportViewer();
IPreviewModel viewmodel = new PreviewModel(); IPreviewModel exportRunner = new ExportRunner();
public WPFReportPreview(ReportDesignerLoader loader,IViewContent content):base(content) public WPFReportPreview(ReportDesignerLoader loader,IViewContent content):base(content)
{ {
@ -47,11 +47,11 @@ namespace ICSharpCode.Reports.Addin.Project.WPF
switch (model.DataModel) switch (model.DataModel)
{ {
case GlobalEnums.PushPullModel.FormSheet : { case GlobalEnums.PushPullModel.FormSheet : {
viewmodel.RunReport(model,(ReportParameters)null); exportRunner.RunReport(model,(ReportParameters)null);
break; break;
} }
case GlobalEnums.PushPullModel.PullData:{ case GlobalEnums.PushPullModel.PullData:{
viewmodel.RunReport(model,(ReportParameters)null); exportRunner.RunReport(model,(ReportParameters)null);
break; break;
} }
case GlobalEnums.PushPullModel.PushData: case GlobalEnums.PushPullModel.PushData:
@ -59,19 +59,16 @@ namespace ICSharpCode.Reports.Addin.Project.WPF
var cmd = new DataSetFromXsdCommand(); var cmd = new DataSetFromXsdCommand();
cmd.Run(); cmd.Run();
System.Data.DataSet ds = cmd.DataSet; System.Data.DataSet ds = cmd.DataSet;
viewmodel.RunReport(model,ds.Tables[0],(ReportParameters)null); exportRunner.RunReport(model,ds.Tables[0],(ReportParameters)null);
break; break;
} }
default: default:
throw new InvalidReportModelException(); throw new InvalidReportModelException();
} }
FixedDocumentRenderer renderer = FixedDocumentRenderer.CreateInstance(model.ReportSettings,viewmodel.Pages); PreviewViewModel pvm = new PreviewViewModel (model.ReportSettings,exportRunner.Pages);
//viewer.Document = pvm.Document;
renderer.Start(); viewer.SetBinding(pvm);
renderer.RenderOutput();
renderer.End();
viewer.Document = renderer.Document;
} }

3
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj

@ -367,11 +367,12 @@
<Compile Include="Project\ReportViewer\ReportViewer.designer.cs"> <Compile Include="Project\ReportViewer\ReportViewer.designer.cs">
<DependentUpon>ReportViewer.cs</DependentUpon> <DependentUpon>ReportViewer.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Project\WpfReportViewer\PreviewViewModel.cs" />
<Compile Include="Project\WpfReportViewer\WpfReportViewer.xaml.cs"> <Compile Include="Project\WpfReportViewer\WpfReportViewer.xaml.cs">
<DependentUpon>WpfReportViewer.xaml</DependentUpon> <DependentUpon>WpfReportViewer.xaml</DependentUpon>
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Include="Project\WpfReportViewer\PreviewModel.cs" /> <Compile Include="Project\WpfReportViewer\ExportRunner.cs" />
<Compile Include="Project\WPF\ExtensionMethodes.cs" /> <Compile Include="Project\WPF\ExtensionMethodes.cs" />
<Compile Include="Project\WPF\FixedDocumentCreator.cs" /> <Compile Include="Project\WPF\FixedDocumentCreator.cs" />
<Compile Include="Project\Xml\BaseItemLoader.cs" /> <Compile Include="Project\Xml\BaseItemLoader.cs" />

4
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/WpfReportViewer/PreviewModel.cs → src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/WpfReportViewer/ExportRunner.cs

@ -16,9 +16,9 @@ namespace ICSharpCode.Reports.Core.WpfReportViewer
/// <summary> /// <summary>
/// Description of WpfReportViewModel. /// Description of WpfReportViewModel.
/// </summary> /// </summary>
public class PreviewModel:IPreviewModel public class ExportRunner:IPreviewModel
{ {
public PreviewModel() public ExportRunner()
{ {
Pages = new PagesCollection(); Pages = new PagesCollection();
} }

63
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/WpfReportViewer/PreviewViewModel.cs

@ -0,0 +1,63 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 08.06.2011
* Time: 19:41
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.ComponentModel;
using System.Windows.Documents;
using ICSharpCode.Reports.Core.Exporter.ExportRenderer;
namespace ICSharpCode.Reports.Core.WpfReportViewer
{
/// <summary>
/// Description of PreviewViewModel.
/// </summary>
public class PreviewViewModel:INotifyPropertyChanged
{
private IDocumentPaginatorSource document;
public PreviewViewModel(ReportSettings reportSettings, PagesCollection pages)
{
this.Pages = pages;
FixedDocumentRenderer renderer = FixedDocumentRenderer.CreateInstance(reportSettings,Pages);
renderer.Start();
renderer.RenderOutput();
renderer.End();
OnNotifyPropertyChanged("Pages");
this.Document = renderer.Document;
}
public PagesCollection Pages {get;private set;}
public IDocumentPaginatorSource Document
{
get {return document;}
set {
this.document = value;
OnNotifyPropertyChanged ("Document");
}
}
public event PropertyChangedEventHandler PropertyChanged;
void OnNotifyPropertyChanged(string num0)
{
if (PropertyChanged != null) {
PropertyChanged(this,new PropertyChangedEventArgs(num0));
}
}
}
}

13
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/WpfReportViewer/WpfReportViewer.xaml

@ -1,12 +1,17 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<UserControl <UserControl
x:Class="ICSharpCode.Reports.Core.WpfReportViewer.WpfReportViewer" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> x:Class="ICSharpCode.Reports.Core.WpfReportViewer.WpfReportViewer"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<!-- {Binding Path=PathToProperty, RelativeSource={RelativeSource AncestorType={x:Type typeOfAncestor}}} -->
<Grid> <Grid>
<DocumentViewer <DocumentViewer
x:Name="DocumentViewer" x:Name="DocumentViewer"
Document="{Binding Path=DataContext.Document,
PresentationTraceSources.TraceLevel=High,
RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"
HorizontalAlignment="Stretch" HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" VerticalAlignment="Stretch"></DocumentViewer>
Width="984"></DocumentViewer>
</Grid> </Grid>
</UserControl> </UserControl>

8
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/WpfReportViewer/WpfReportViewer.xaml.cs

@ -8,6 +8,7 @@
*/ */
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Text; using System.Text;
using System.Windows; using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
@ -26,6 +27,7 @@ namespace ICSharpCode.Reports.Core.WpfReportViewer
public interface IWpfReportViewer public interface IWpfReportViewer
{ {
IDocumentPaginatorSource Document {set;} IDocumentPaginatorSource Document {set;}
void SetBinding (PreviewViewModel model);
} }
/// <summary> /// <summary>
/// Interaction logic for WpfReportViewer.xaml /// Interaction logic for WpfReportViewer.xaml
@ -38,12 +40,16 @@ namespace ICSharpCode.Reports.Core.WpfReportViewer
InitializeComponent(); InitializeComponent();
} }
public void SetBinding (PreviewViewModel model)
{
this.DataContext = model;
}
public IDocumentPaginatorSource Document { public IDocumentPaginatorSource Document {
set { set {
this.DocumentViewer.Document = value; this.DocumentViewer.Document = value;
} }
} }
} }
} }
Loading…
Cancel
Save