private static PrintCapabilities ScaleToFit1Page(ContentPresenter content, PrintDialog dlg, out double scale, double printScaleOffset) { var prCaps = dlg.PrintQueue.GetPrintCapabilities(dlg.PrintTicket); //get scale of the print wrt to screen of WPF visual scale = Math.Min(prCaps.PageImageableArea.ExtentWidth / content.ActualWidth, prCaps.PageImageableArea.ExtentHeight / content.ActualHeight); scale += printScaleOffset; //Transform the Visual to scale content.LayoutTransform = new ScaleTransform(scale, scale); //get the size of the printer page Size sz = new Size(prCaps.PageImageableArea.ExtentWidth, prCaps.PageImageableArea.ExtentHeight); //update the layout of the visual to the printer page size. content.Measure(sz); content.Arrange(new Rect(new Point(prCaps.PageImageableArea.OriginWidth, prCaps.PageImageableArea.OriginHeight), sz)); return prCaps; }
private static void ResetVisualState(ContentPresenter objectToPrint, PrintCapabilities printCaps, bool wasVirtualized) { objectToPrint.Width = double.NaN; objectToPrint.UpdateLayout(); objectToPrint.LayoutTransform = new ScaleTransform(1, 1); Size size = new Size(printCaps.PageImageableArea.ExtentWidth, printCaps.PageImageableArea.ExtentHeight); objectToPrint.Measure(size); objectToPrint.Arrange(new Rect(new Point(printCaps.PageImageableArea.OriginWidth, printCaps.PageImageableArea.OriginHeight), size)); if (!wasVirtualized) return; var dg = objectToPrint.FindChild<DataGrid>(); dg.EnableRowVirtualization = true; dg.EnableColumnVirtualization = true; VirtualizingPanel.SetIsVirtualizing(dg, true); }
public void VisualTreeTest4 () { ContentPresenter presenter = new ContentPresenter (); CreateAsyncTest (presenter, () => { presenter.Content = new Rectangle (); Assert.VisualChildren (presenter, "#1"); // No visual children presenter.Measure (Size.Empty); Assert.VisualChildren (presenter, "#2", new VisualNode<Rectangle> ("#a") ); // Changing the template unsets the visual child until the next Measure pass presenter.ContentTemplate = new DataTemplate (); Assert.VisualChildren (presenter, "#3"); // No visual children presenter.Measure (Size.Empty); Assert.VisualChildren (presenter, "#4"); Assert.IsNull (presenter.DataContext, "#5"); }); }
public void VisualTreeTest2 () { ContentPresenter presenter = new ContentPresenter (); presenter.Content = "I'm a string"; Assert.VisualChildren (presenter, "#1"); // No visual children presenter.Measure (Size.Empty); Assert.VisualChildren (presenter, "#2", new VisualNode<Grid> ("#a", new VisualNode<TextBlock> ("#b") ) ); CreateAsyncTest (presenter, () => { Assert.VisualChildren (presenter, "#3", new VisualNode<Grid> ("#c", new VisualNode<TextBlock> ("#d") ) ); }); }
public void VisualTreeTest () { ContentPresenter presenter = new ContentPresenter (); presenter.Content = new Rectangle (); Assert.VisualChildren (presenter, "#1"); // No visual children presenter.Measure (Size.Empty); Assert.VisualChildren (presenter, "#2", new VisualNode<Rectangle> ("#a", (VisualNode [])null) ); CreateAsyncTest (presenter, () => { Assert.VisualChildren (presenter, "#3", new VisualNode<Rectangle> ("#b", (VisualNode [ ]) null) ); }); }
public void DefaultTemplate_FindName () { ContentPresenter presenter = new ContentPresenter { Content = "Content" }; presenter.Measure(Size.Empty); Grid grid = null; Assert.VisualChildren(presenter, "#1", new VisualNode<Grid>("#a", g => grid = g, new VisualNode<TextBlock>("#b") ) ); var child = (TextBlock) grid.Children[0]; child.Name = "TestName"; Assert.IsNull(child.FindName("TestName"), "#2"); Assert.IsNull(grid.FindName("TestName"), "#3"); Assert.IsNull(presenter.FindName("TestName"), "#4"); grid.Children.Clear(); TestPanel.Children.Add(child); Assert.IsNull(TestPanel.FindName("TestName"), "#5"); }
private static void ResetVisualState(ContentPresenter objectToPrint, PrintCapabilities printCaps) { objectToPrint.Width = double.NaN; objectToPrint.UpdateLayout(); objectToPrint.LayoutTransform = new ScaleTransform(1, 1); Size size = new Size(printCaps.PageImageableArea.ExtentWidth, printCaps.PageImageableArea.ExtentHeight); objectToPrint.Measure(size); objectToPrint.Arrange(new Rect(new Point(printCaps.PageImageableArea.OriginWidth, printCaps.PageImageableArea.OriginHeight), size)); }