Browse Source

Create TextBlock with WpfVisitor

reports
Peter Forstmeier 13 years ago
parent
commit
c7b86d5c07
  1. 8
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs
  2. 12
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/WpfVisitor.cs
  3. 37
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs

8
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs

@ -65,9 +65,13 @@ namespace ICSharpCode.Reporting.ExportRenderer
public TextBlock CreateTextBlock(ExportText exportText) public TextBlock CreateTextBlock(ExportText exportText)
{ {
var textBlock = new TextBlock(); var textBlock = new TextBlock();
textBlock.Text = exportText.Text; textBlock.Text = exportText.Text;
textBlock.Foreground = ConvertBrush(exportText.ForeColor); textBlock.Foreground = ConvertBrush(exportText.ForeColor);
SetFont(textBlock,exportText); SetFont(textBlock,exportText);
textBlock.Background = ConvertBrush(exportText.BackColor);
textBlock.TextWrapping = TextWrapping.WrapWithOverflow; textBlock.TextWrapping = TextWrapping.WrapWithOverflow;
// string [] inlines = exportText.Text.Split(System.Environment.NewLine.ToCharArray()); // string [] inlines = exportText.Text.Split(System.Environment.NewLine.ToCharArray());
@ -84,8 +88,6 @@ namespace ICSharpCode.Reporting.ExportRenderer
// textBlock.Background = ConvertBrush(exportText.StyleDecorator.BackColor); // textBlock.Background = ConvertBrush(exportText.StyleDecorator.BackColor);
// SetContendAlignment(textBlock,exportText.StyleDecorator); // SetContendAlignment(textBlock,exportText.StyleDecorator);
SetPositionAndSize(textBlock,exportText);
textBlock.Background = ConvertBrush(exportText.BackColor);
return textBlock; return textBlock;
} }
@ -94,6 +96,8 @@ namespace ICSharpCode.Reporting.ExportRenderer
{ {
var canvas = new Canvas(); var canvas = new Canvas();
SetPositionAndSize(canvas,container); SetPositionAndSize(canvas,container);
canvas.Name = container.Name;
canvas.Background = ConvertBrush(container.BackColor); canvas.Background = ConvertBrush(container.BackColor);
return canvas; return canvas;
} }

12
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/WpfVisitor.cs

@ -8,6 +8,8 @@
*/ */
using System; using System;
using System.Windows; using System.Windows;
using System.Windows.Controls;
using ICSharpCode.Reporting.ExportRenderer; using ICSharpCode.Reporting.ExportRenderer;
using ICSharpCode.Reporting.Items; using ICSharpCode.Reporting.Items;
using ICSharpCode.Reporting.PageBuilder.ExportColumns; using ICSharpCode.Reporting.PageBuilder.ExportColumns;
@ -39,19 +41,15 @@ namespace ICSharpCode.Reporting.Exporter.Visitors
public override void Visit(ExportContainer exportColumn) public override void Visit(ExportContainer exportColumn)
{ {
var canvas = (Canvas)documentCreator.CreateContainer(exportColumn);
// Console.WriteLine("Wpf-Visit ExportContainer {0} - {1} - {2} - {3}", exportColumn.Name,exportColumn.Size,
// exportColumn.Location,exportColumn.BackColor);
var canvas = documentCreator.CreateContainer(exportColumn);
UIElement = canvas; UIElement = canvas;
} }
public override void Visit(ExportText exportColumn) public override void Visit(ExportText exportColumn)
{ {
// Console.WriteLine("Wpf-Visit ExportText {0} - {1} - {2}", exportColumn.Name,exportColumn.Size,exportColumn.DesiredSize); TextBlock textBlock = documentCreator.CreateTextBlock(exportColumn);
var textBlock = documentCreator.CreateTextBlock(exportColumn); CanvasHelper.SetPosition(textBlock,new Point(exportColumn.Location.X,exportColumn.Location.Y));
UIElement = textBlock; UIElement = textBlock;
} }

37
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs

@ -90,32 +90,34 @@ namespace ICSharpCode.Reporting.Exporter
Console.WriteLine("canvas at {0}",CanvasHelper.GetPosition(containerCanvas)); Console.WriteLine("canvas at {0}",CanvasHelper.GetPosition(containerCanvas));
foreach (var element in exportContainer.ExportedItems) { foreach (var element in exportContainer.ExportedItems) {
var el = element as IExportContainer;
if (el == null) { if (!IsContainer(element)) {
var t = CreateSingleEntry(parentCanvas,element);
containerCanvas.Children.Add(t); var singleItem = CreateSingleEntry(containerCanvas,element);
}
Console.WriteLine("TEST {0} - {1}",CanvasHelper.GetPosition(singleItem),CanvasHelper.GetPosition(containerCanvas));
containerCanvas.Children.Add(singleItem);
}
ShowContainerRecursive(parentCanvas,element); ShowContainerRecursive(parentCanvas,element);
} }
} }
} }
// http://stackoverflow.com/questions/4523208/wpf-positioning-uielement-on-a-canvas bool IsContainer (IExportColumn column) {
//http://stackoverflow.com/questions/1123101/changing-position-of-an-element-programmatically-in-wpf var container = column as IExportContainer;
//http://stackoverflow.com/questions/1923697/how-can-i-get-the-position-of-a-child-element-relative-to-a-parent if (container == null) {
return false;
}
return true;
}
Canvas CreateContainer(UIElement parent,IExportContainer exportContainer) Canvas CreateContainer(UIElement parent,IExportContainer exportContainer)
{ {
var containerAcceptor = exportContainer as IAcceptor; var containerAcceptor = exportContainer as IAcceptor;
containerAcceptor.Accept(visitor); containerAcceptor.Accept(visitor);
var containerCanvas = (Canvas)visitor.UIElement; var canvas = (Canvas)visitor.UIElement;
// Console.WriteLine("CreateContainer bevore {0}",CanvasHelper.GetPosition(containerCanvas)); return canvas;
CanvasHelper.SetPosition(containerCanvas,
new Point(exportContainer.Location.X,exportContainer.Location.Y));
// Console.WriteLine("CreateContainer after {0}",CanvasHelper.GetPosition(containerCanvas));
return containerCanvas;
} }
@ -125,10 +127,7 @@ namespace ICSharpCode.Reporting.Exporter
v.Accept(visitor); v.Accept(visitor);
var c = visitor.UIElement; var c = visitor.UIElement;
// CanvasHelper.SetLeft(c,element.Location.X); Console.WriteLine("CreateSingleEntry after {0}",CanvasHelper.GetPosition(c));
// CanvasHelper.SetTop(c,10);
CanvasHelper.SetPosition(c,new Point(element.Location.X,element.Location.Y));
Console.WriteLine("CreateSingleEntry after {0}",CanvasHelper.GetPosition(c));
return c; return c;
} }

Loading…
Cancel
Save