打印视觉、分页、MVVM 模式。
Print Visual, Pagination , MVVM Pattern.
我正在尝试使用 WPF 元素的分页打印视觉效果(或任何相关内容)。我正在使用 MVVM 模式开发。
这是我的视觉布局。用户可以滚动查看页面的位置。
<ScrollViewer>
<StackPanel x:Name="Wrapper">
<StackPanel x:Name="PageOne" />
<StackPanel x:Name="PageTwo" />
</StackPanel>
</ScrollViewer>
视觉效果通过按钮上的命令绑定传递。
<Button Command="{Binding PrintCommand}" CommandParameter="{BindingElementName=Wrapper}"
视觉传递给打印方法。
PrintDialog newDialog = new PrintDialog();
newDialog.PrintVisual(MyVisualName, "Printing is Fun!");
我想对两个页面(以及更多)进行分页,并将视觉效果缩放到纸上,同时保持 MVVM 风格。
谢谢。
最后我使用了 Flow Inline Flowdocument。
<FlowDocumentScrollViewer>
<FlowDocument x:Name="EntirePage">
<Section>
<BlockUIContainer>
</BlockUIContainer>
</Section>
</FlowDocument>
</FlowDocumentScrollViewer>
打印 BlockUIContainer 中的每个控件。 (需要大量的页面大小和边距调整才能使分页完美运行)Section/BlockUI 会自动进行分页 - 所以对我来说,第一页是一个 BlockUi,第二页是另一个 - Comment/Ask更多信息
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<i:InvokeCommandAction Command="{Binding PrintCommand}" CommandParameter="{Binding ElementName=EntirePage}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
我通过命令参数传递了 FlowDocument。
printCommand = new RelayCommand(p => PreparePrint((FlowDocument)p));
(pageVisual 是通过命令参数传递的流文档)
然后在我得到的一些方法之间;
IDocumentPaginatorSource idocument = pageVisual as IDocumentPaginatorSource;
printDialog.PrintDocument(idocument.DocumentPaginator, "Printing Machine : " + Machine.Serial);
如果您感到困惑并需要帮助(就像我一样),请不要犹豫 comment/ask 个问题。
我正在尝试使用 WPF 元素的分页打印视觉效果(或任何相关内容)。我正在使用 MVVM 模式开发。
这是我的视觉布局。用户可以滚动查看页面的位置。
<ScrollViewer>
<StackPanel x:Name="Wrapper">
<StackPanel x:Name="PageOne" />
<StackPanel x:Name="PageTwo" />
</StackPanel>
</ScrollViewer>
视觉效果通过按钮上的命令绑定传递。
<Button Command="{Binding PrintCommand}" CommandParameter="{BindingElementName=Wrapper}"
视觉传递给打印方法。
PrintDialog newDialog = new PrintDialog();
newDialog.PrintVisual(MyVisualName, "Printing is Fun!");
我想对两个页面(以及更多)进行分页,并将视觉效果缩放到纸上,同时保持 MVVM 风格。
谢谢。
最后我使用了 Flow Inline Flowdocument。
<FlowDocumentScrollViewer>
<FlowDocument x:Name="EntirePage">
<Section>
<BlockUIContainer>
</BlockUIContainer>
</Section>
</FlowDocument>
</FlowDocumentScrollViewer>
打印 BlockUIContainer 中的每个控件。 (需要大量的页面大小和边距调整才能使分页完美运行)Section/BlockUI 会自动进行分页 - 所以对我来说,第一页是一个 BlockUi,第二页是另一个 - Comment/Ask更多信息
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<i:InvokeCommandAction Command="{Binding PrintCommand}" CommandParameter="{Binding ElementName=EntirePage}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
我通过命令参数传递了 FlowDocument。
printCommand = new RelayCommand(p => PreparePrint((FlowDocument)p));
(pageVisual 是通过命令参数传递的流文档)
然后在我得到的一些方法之间;
IDocumentPaginatorSource idocument = pageVisual as IDocumentPaginatorSource;
printDialog.PrintDocument(idocument.DocumentPaginator, "Printing Machine : " + Machine.Serial);
如果您感到困惑并需要帮助(就像我一样),请不要犹豫 comment/ask 个问题。