怎样自定义DevExpress Grid的打印外观
推荐于2016-11-09 · 知道合伙人互联网行家
关注
展开全部
认情况下,
由于表格是一个“所见即所得”的控件,DXGrid以一种简单的表格格式被导出和打印。但是你仍然可以调节表格打印的外观。这篇文章讲述了怎样使用表格
的打印模板和选项来创建你自己特定的打印外观。但是, 如果你想得到全部的自定义数据打印外观,欢迎你考虑使用我们的 XtraReports 产品,它会提供给你一种创建自定义报告的强大而灵活的方式 。
默认情况下, 表格是作为一个简单的表来打印 。它的宽度被调节成适应一个报告页面,你能够通过设置打印自动宽度为False来切换自动宽度。
你可以通过分别设置打印列表头和打印总摘要属性为false来从打印视图上移除头部和底部
每一个表格打印部分的外观可以被重定义。因此,你能使用PrintHeaderTemplate 属性来设置自定义表头。
[XML]
<dxg:GridControl.Resources>
<DataTemplate x:Key="CustomPrintHeaderTemplate">
<Grid>
<Rectangle RadiusX="5" RadiusY="5" Fill="Red" dxp:ExportSettings.TargetType="Image"/>
<dxe:TextEdit Text="Custom header template"
IsPrintingMode="True"
Width="{Binding Path=Content.(dxg:GridPrintingHelper.PrintRowInfo).TotalHeaderWidth}"
FontSize="20"/>
</Grid>
</DataTemplate> you
</dxg:GridControl.Resources>
<dxg:GridControl.View>
<dxg:TableView PrintHeaderTemplate="{StaticResource CustomPrintHeaderTemplate}"/>
</dxg:GridControl.View>
如果你想获取表头模板的 column headers文本,你可以使用以下的绑定声明:
[XML]
<dxe:TextEdit Text="{Binding Path=Content.View.DataControl.Columns[ColumnName].HeaderCaption}"/>
注意:被放置在表头模板中的TextEdit 拥有一个设置为true的
IsPrintMode属性,Rectangle控件有一个ExportSettings.TargetType。打印模板中所使用的所有控件必须被调整
以便打印。因此,任何从BaseEdit继承的控件都必须将IsPrintingMode属性设置为true。
其他的每个控件必须通过ExportSettings
属性来调节打印。因此,它必须要提供ExportSettings.TargetType属性值。这个属性被定义在
xmlns:dxp="http://schemas.devexpress.com/winfx/2008/xaml/printing"
命名空间中,并指定如何利用打印系统来利用该控件。
例如, 如果你想打印TextBlock,
必须将ExportSettings.TargetType指定为文本,这样TextBlock才会被打印。如果你想设置一些控件的背景和前景,你应该分
别设置ExportSettings.Background和ExportSettings.Foreground。
[XML]
<TextBlock Text="Textblock text" Margin="10"Foreground="Red"dxp:ExportSettings.TargetType="Text"dxp:ExportSettings.Background="White"dxp:ExportSettings.Foreground="Red"/>
形状和复合控件可以作为图形导出:
[XML]
<Ellipse Fill="Yellow" Width="15" Height="15"dxp:ExportSettings.TargetType="Image"dxp:ExportSettings.Background="Transparent"/>
如何你的打印模板内有一些面板,你应该在面板中设置ExportSettings.TargetType属性,以便打印的子系统处理子元素。
[XML]
<StackPanel Orientation="Horizontal"dxp:ExportSettings.TargetType="Panel"><TextBlock Text="Property: " Margin="2" dxp:ExportSettings.TargetType="Text"/><TextBlock Text="Value" Margin="2" dxp:ExportSettings.TargetType="Text"/></StackPanel>
如果一个控件没有指定导出设置类型,控件将会被打印子系统忽视,它将会在打印文档中丢失。这也适用于在IsPrintingMode属性没有设置的编辑器中。
表格底部模板可以以它在头部模板中定义的方式来同样被定义。
[XML]
<dxg:GridControl.Resources>
<DataTemplate x:Key="CustomPrintFooterTemplate">
<dxe:TextEdit IsPrintingMode="True"
Width="{Binding Path=Content.(dxg:GridPrintingHelper.PrintRowInfo).TotalHeaderWidth}"
Text="{Binding Path=Path=Content.View.DataControl.Columns[ColumnName].TotalSummaryText, Mode=OneWay}"
/>
</DataTemplate>
</dxg:GridControl.Resources>
PrintRowTemplate属性定义了一个用于显示每一行表格的模板。在这里你可以放置你的行单元值去显示一个行内容。模板的
DataContext.Content属性中有一个RowData类对象。为了简化针对在这个模板上行单元值的绑定表达式
,你可以通过以下的代码来定义模板布局:
[XML]
<DataTemplate x:Key="CustomPrintRowTemplate">
<ContentControl Foreground="{Binding Foreground, RelativeSource={RelativeSource TemplatedParent}}">
<Grid DataContext="{Binding DataContext.Content.Row, RelativeSource={RelativeSource TemplatedParent}}"
Width="{Binding Path=DataContext.Content.(dxg:GridPrintingHelper.PrintRowInfo).TotalHeaderWidth, ElementName=contentControl}"
>
<Rectangle RadiusX="5" RadiusY="5" Fill="Red" dxp:ExportSettings.TargetType="Image"/>
<dxe:ImageEdit Source="{Binding Path=Photo}" IsPrintingMode="True"/>
<dxe:TextEdit EditValue="{Binding FirstName}" IsPrintingMode="True"/>
</Grid>
</ContentControl>
</DataTemplate>
由于表格是一个“所见即所得”的控件,DXGrid以一种简单的表格格式被导出和打印。但是你仍然可以调节表格打印的外观。这篇文章讲述了怎样使用表格
的打印模板和选项来创建你自己特定的打印外观。但是, 如果你想得到全部的自定义数据打印外观,欢迎你考虑使用我们的 XtraReports 产品,它会提供给你一种创建自定义报告的强大而灵活的方式 。
默认情况下, 表格是作为一个简单的表来打印 。它的宽度被调节成适应一个报告页面,你能够通过设置打印自动宽度为False来切换自动宽度。
你可以通过分别设置打印列表头和打印总摘要属性为false来从打印视图上移除头部和底部
每一个表格打印部分的外观可以被重定义。因此,你能使用PrintHeaderTemplate 属性来设置自定义表头。
[XML]
<dxg:GridControl.Resources>
<DataTemplate x:Key="CustomPrintHeaderTemplate">
<Grid>
<Rectangle RadiusX="5" RadiusY="5" Fill="Red" dxp:ExportSettings.TargetType="Image"/>
<dxe:TextEdit Text="Custom header template"
IsPrintingMode="True"
Width="{Binding Path=Content.(dxg:GridPrintingHelper.PrintRowInfo).TotalHeaderWidth}"
FontSize="20"/>
</Grid>
</DataTemplate> you
</dxg:GridControl.Resources>
<dxg:GridControl.View>
<dxg:TableView PrintHeaderTemplate="{StaticResource CustomPrintHeaderTemplate}"/>
</dxg:GridControl.View>
如果你想获取表头模板的 column headers文本,你可以使用以下的绑定声明:
[XML]
<dxe:TextEdit Text="{Binding Path=Content.View.DataControl.Columns[ColumnName].HeaderCaption}"/>
注意:被放置在表头模板中的TextEdit 拥有一个设置为true的
IsPrintMode属性,Rectangle控件有一个ExportSettings.TargetType。打印模板中所使用的所有控件必须被调整
以便打印。因此,任何从BaseEdit继承的控件都必须将IsPrintingMode属性设置为true。
其他的每个控件必须通过ExportSettings
属性来调节打印。因此,它必须要提供ExportSettings.TargetType属性值。这个属性被定义在
xmlns:dxp="http://schemas.devexpress.com/winfx/2008/xaml/printing"
命名空间中,并指定如何利用打印系统来利用该控件。
例如, 如果你想打印TextBlock,
必须将ExportSettings.TargetType指定为文本,这样TextBlock才会被打印。如果你想设置一些控件的背景和前景,你应该分
别设置ExportSettings.Background和ExportSettings.Foreground。
[XML]
<TextBlock Text="Textblock text" Margin="10"Foreground="Red"dxp:ExportSettings.TargetType="Text"dxp:ExportSettings.Background="White"dxp:ExportSettings.Foreground="Red"/>
形状和复合控件可以作为图形导出:
[XML]
<Ellipse Fill="Yellow" Width="15" Height="15"dxp:ExportSettings.TargetType="Image"dxp:ExportSettings.Background="Transparent"/>
如何你的打印模板内有一些面板,你应该在面板中设置ExportSettings.TargetType属性,以便打印的子系统处理子元素。
[XML]
<StackPanel Orientation="Horizontal"dxp:ExportSettings.TargetType="Panel"><TextBlock Text="Property: " Margin="2" dxp:ExportSettings.TargetType="Text"/><TextBlock Text="Value" Margin="2" dxp:ExportSettings.TargetType="Text"/></StackPanel>
如果一个控件没有指定导出设置类型,控件将会被打印子系统忽视,它将会在打印文档中丢失。这也适用于在IsPrintingMode属性没有设置的编辑器中。
表格底部模板可以以它在头部模板中定义的方式来同样被定义。
[XML]
<dxg:GridControl.Resources>
<DataTemplate x:Key="CustomPrintFooterTemplate">
<dxe:TextEdit IsPrintingMode="True"
Width="{Binding Path=Content.(dxg:GridPrintingHelper.PrintRowInfo).TotalHeaderWidth}"
Text="{Binding Path=Path=Content.View.DataControl.Columns[ColumnName].TotalSummaryText, Mode=OneWay}"
/>
</DataTemplate>
</dxg:GridControl.Resources>
PrintRowTemplate属性定义了一个用于显示每一行表格的模板。在这里你可以放置你的行单元值去显示一个行内容。模板的
DataContext.Content属性中有一个RowData类对象。为了简化针对在这个模板上行单元值的绑定表达式
,你可以通过以下的代码来定义模板布局:
[XML]
<DataTemplate x:Key="CustomPrintRowTemplate">
<ContentControl Foreground="{Binding Foreground, RelativeSource={RelativeSource TemplatedParent}}">
<Grid DataContext="{Binding DataContext.Content.Row, RelativeSource={RelativeSource TemplatedParent}}"
Width="{Binding Path=DataContext.Content.(dxg:GridPrintingHelper.PrintRowInfo).TotalHeaderWidth, ElementName=contentControl}"
>
<Rectangle RadiusX="5" RadiusY="5" Fill="Red" dxp:ExportSettings.TargetType="Image"/>
<dxe:ImageEdit Source="{Binding Path=Photo}" IsPrintingMode="True"/>
<dxe:TextEdit EditValue="{Binding FirstName}" IsPrintingMode="True"/>
</Grid>
</ContentControl>
</DataTemplate>
博思aippt
2024-07-20 广告
2024-07-20 广告
作为深圳市博思云创科技有限公司的工作人员,对于Word文档生成PPT的操作,我们有以下建议:1. 使用另存为功能:在Word中编辑完文档后,点击文件->另存为,选择PowerPoint演示文稿(*.pptx)格式,即可将文档内容转换为PPT...
点击进入详情页
本回答由博思aippt提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询