2013-03-20 4 views
0

Я новичок в Silverlight, я поставил задачу создать шаблон предварительного просмотра для веб-приложения GIS для моей компании. Мое требование заключается в следующем:Предварительный просмотр в silverlight/xaml

1) Когда я нажимаю на кнопке предварительного просмотра для печати на моем MainPage должен всплывать новое окно предварительного просмотра печати 2) Окно предварительного просмотра должно иметь MainPage содержания 3) Он должен иметь кнопку печати для печати. 4) Он должен иметь следующую страницу и предыдущую страницу вариант 5) Значок зума/бегунок для увеличения и уменьшения содержания предварительного просмотра

UPTO теперь я просто добавил кнопку предварительного просмотра на моем MainPage, который по щелчку открыв новое окно xaml, и в этом окне я установил содержимое следующим образом.

Вот вид PrintPreview.xaml

<Grid x:Name="LayoutRoot" Background="White"> 
    <Canvas x:Name="m_canvas" Height="490" VerticalAlignment="Top" Margin="0,0,60,0"> 

     <Button x:Name="m_btn_print" Canvas.Top="5" Canvas.Left="5" Width="32" Height="32" Click="m_btn_print_Click"> 
      <Image Source="Images/print.png" Stretch="Fill" /> 
      <ToolTipService.ToolTip> 
       <ToolTip Content="Print"></ToolTip> 
      </ToolTipService.ToolTip> 
     </Button> 

     <Button x:Name="m_btn_prev_page" Canvas.Top="5" Canvas.Left="45" Width="32" Height="32" Click="m_btn_prev_page_Click"> 
      <Image Source="Images/arrow.left.png" Stretch="Fill"/> 
      <ToolTipService.ToolTip> 
       <ToolTip Content="Previous Page"></ToolTip> 
      </ToolTipService.ToolTip> 
     </Button> 

     <Button x:Name="m_btn_next_page" Canvas.Top="5" Canvas.Left="85" Width="32" Height="32" Click="m_btn_next_page_Click"> 
      <Image Source="Images/arrow.right.png" Stretch="Fill"/> 
      <ToolTipService.ToolTip> 
       <ToolTip Content="Next Page"></ToolTip> 
      </ToolTipService.ToolTip> 
     </Button> 

     <Slider x:Name="m_sld_size" Minimum="50" Maximum="125" Value="100" SmallChange="5" LargeChange="5" ValueChanged="m_sld_size_ValueChanged" 
        Canvas.Top="15" Canvas.Left="245" VerticalAlignment="Top" HorizontalAlignment="Right" Width="80" /> 

     <TextBlock x:Name="m_lbl_size" Canvas.Top="2" Canvas.Left="265" FontSize="9" Text="Zoom" Foreground="Black" /> 

     <Canvas x:Name="m_canvas_print" Canvas.Top="40" Canvas.Left="5" Width="317" Height="445" Background="White" 
      VerticalAlignment="Top" HorizontalAlignment="Left"> 
     </Canvas> 


    </Canvas> 
</Grid> 

Теперь то, что должно быть мой код позади, как я должен показать содержание MainPage.xaml на предпросмотре. Пожалуйста, помогите его срочно

Заранее спасибо.

+0

Что вы пробовали? Включает ли он Google 'Silverlight Printing'? Третий результат из этого: http://www.silverlightshow.net/items/Advanced-printing-in-Silverlight-4.aspx –

ответ

1

Мое первое слово в совете - это не использовать объект canvas, если вы не подаете его с чем-то одинаковым при каждом его распечатке. Если вы печатаете динамические значения данных, которые могут меняться в зависимости от времени его печати, я перехожу к панели стека или сетке.

При этом вам нужно будет подключить функцию печати, чтобы напечатать объект m_cavas_print, когда пользователь нажимает кнопку печати. Я добавил несколько примеров кода для печати ниже.

PrintDocument pd = new PrintDocument(); 

    pd.PrintPage += (s, e) => 
    { 
     e.PageVisual = m_cavas_print; 
    }; 

    pd.Print("MainPageContent"); 

Это основной принцип печати. Вы можете поместить это в свой обработчик события нажатия кнопки печати, и он напечатает все, что находится на холсте. Здесь я использовал выражение лямбда для обработки события страницы печати, но вы также можете использовать отдельный метод.

+0

Я знаю о печати, я хочу, чтобы предварительный просмотр в прессе, в любом случае, когда я пытался поместите это в мое сообщение с нажатием кнопки печати, на котором отображается ошибка: 'Ошибка Локальная переменная с именем' e 'не может быть объявлена ​​в этой области, потому что она придавала бы другое значение «e», которое уже используется в' родительская или текущая 'область для обозначения чего-то еще' –

+0

Мы используем отдельное дочернее окно для предварительного просмотра и отформатируем страницу до размера бумаги, на которой вы печатаете. У нас есть полная отметка на странице печати и передача объекта данных в режим просмотра для страницы печати для отображения. Что касается e, просто измените его на args или что-то подобное. – RKaufman