2014-02-13 4 views
0

Я использую печать silverlight с использованием PrintDocument. Мой пользовательский интерфейс генерируется во время выполнения с использованием XamlReader, которые анализируют xaml, которые я сохранил в db.Silverlight Multipage Printing

Вот код:

     string str = sb.ToString(); 
         newUI = XamlReader.Load(sb.ToString()) as FrameworkElement; 
         newUI.DataContext = ReportData; 
         grdPreviewArea.Children.Add(newUI); 
         grdPreviewArea.Height = pageHeight; 
         grdPreviewArea.Width = pageWidth; 
         Grid.SetColumn(newUI, 1); 
         Grid.SetRow(newUI, 1); 

Теперь печатать я устанавливаю newUI, как e.PageVisual в моей ручке печати событий. Это работает отлично, если отображаемый пользовательский интерфейс подходит для одной страницы, но я не могу распечатать вторую страницу, если она не подходит для одной страницы.

ответ

1
  • Сначала вы должны работать, сколько страниц необходимо

    Dim pagesNeeded As Integer = Math.Ceiling (gridHeight/PageHeight) // возвращает количество страниц необходимо

  • Тогда как только первая страница была отправлена ​​на принтер, вам необходимо переместить эти данные из поля зрения и принести новые данные в готовность к печати. Я делаю это, преобразовывая весь набор данных в элемент image/UI, затем я могу настроить значение Y, чтобы привести следующий набор требуемых данных на экран.

    transformGroup.Children.Add (New TranslateTransform() {С .Y = - (pageIndex * pageHeight)})

  • Затем, когда количество необходимых страниц достигается, сообщить принтеру, чтобы остановить

    If pagesLeft <= 0 Then 
         e.HasMorePages = False 
         Exit Sub 
        Else 
         e.HasMorePages = True 
        End If 
    

Или, если это слишком много работы, вы можете просто просто масштабировать все ноты, чтобы соответствовать на экране. Опять же, возможно, путем преобразования в элемент пользовательского интерфейса.

Check НУ t эта ссылка для преобразования в элемент пользовательского интерфейса.

http://www.codeproject.com/Tips/248553/Silverlight-converting-to-image-and-printing-an-UI

Надеется, что это помогает