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

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

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

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

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

Loading…
Cancel
Save