所有这些文本看起来都一样,但我试图让它们看起来不同.我想要小帽子文字.我在这里错过了什么让小帽子排版效果起作用?
要重现这一点,请打开Visual Studio 2008,Do File | New Project,创建一个新的Windows | WPF应用程序,将下面的标记粘贴到Window1.xaml中,然后运行它.
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<FlowDocumentReader>
<FlowDocument>
<Paragraph>
<Run>Some text</Run> <LineBreak />
<Run Typography.Capitals="SmallCaps">Some text</Run> <LineBreak />
<Run Typography.Capitals="AllSmallCaps">Some text</Run> <LineBreak />
<Run Typography.Capitals="PetiteCaps">Some text</Run> <LineBreak />
<Run Typography.Capitals="AllPetiteCaps">Some text</Run> <LineBreak />
</Paragraph>
</FlowDocument>
</FlowDocumentReader>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
根据第一个答案,似乎如果你指定一个特定的字体,你可以到达某个地方.将FlowDocument开始标记更改为:
<FlowDocument FontFamily="Palatino Linotype">
Run Code Online (Sandbox Code Playgroud)
..你得到SmallCaps和AllSmallCaps,但不是PetiteCaps或AllPetiteCaps.所以它取决于字体.但这引起了其他问题:
请考虑以下RTF文档
{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fswiss\fprq2\fcharset0 Segoe UI;}{\f1\fswiss\fcharset0 Arial;}}
{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\f0\fs22 Sample Text\f1\fs20\par
}
Run Code Online (Sandbox Code Playgroud)
它包含字体Segoe UI 11 pt中的"Sample Text".现在,当我分别使用WPF的FlowDocument和TextRange.Load()和.Save()加载然后保存文档时,字体大小减小到10.5pt.使用RTF作为输入/输出时,有没有办法保留原始字体大小?
我正在创建一个带有WPF UI的EF4模型优先应用程序.我的UI上的一个控件是RichTextDocument,它输出一个WPF FlowDocument.我可以将FlowDocument序列化为字节数组,或者将其XAML标记提取为字符串.如果可以的话,我更愿意使用二进制序列化.这是我的问题:
如果我序列化为字节数组,如何在EDM设计器中将实体属性指定为字节数组?
如果我提取XAML标记字符串,是否可以指定EDM Designer将相应的数据库列创建为nvarchar(max)列?
至于第二个问题,我假设我总是可以手动编辑MyModel.edmx.sql文件,nvarchar(4000)以便nvarchar(max)在执行之前将数据类型更改为,但我想知道是否可以在Designer中完成.
谢谢你的帮助.
我正在使用此代码和带有xps扩展名的fileName将WPF FlowDocument保存到文件系统:
// Save FlowDocument to file system as XPS document
using (var fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
var textRange = new TextRange(m_Text.ContentStart, m_Text.ContentEnd);
textRange.Save(fs, DataFormats.XamlPackage);
}
Run Code Online (Sandbox Code Playgroud)
我的应用可以使用以下代码重新加载文档:
// Load file
using (var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
m_Text = new FlowDocument();
var textRange = new TextRange(m_Text.ContentStart, m_Text.ContentEnd);
textRange.Load(fs, DataFormats.XamlPackage);
}
Run Code Online (Sandbox Code Playgroud)
但是,Windows 7附带的XPS Viewer无法打开文件.保存的XPS文件显示XPS图标,但是当我双击一个时,XPS查看器无法打开它.错误消息显示"XPS Viewer无法打开此文档".
知道我需要对XPS文档做什么才能让它可以通过XPS Viewer打开吗?谢谢你的帮助.
我几乎完成了实现打印功能,但我无法完成最后一道障碍.
我的问题是,我正在打印一些报告,包括一个标题(包含报告所涉人员的信息),一个页脚(带有页码)和中间的内容,这是一个FlowDocument.由于流文档可能相当长,因此很可能它们将跨越多个页面.
我的方法是创建一个派生自DocumentPaginator的自定义FlowDocumentPaginator.
在那里我定义我的标题和我的页脚.
但是,当我打印我的页面时,flowdocument和我的页眉和页脚在彼此的顶部.
所以我的问题很简单 - 如何定义页面上的flowdocument部分将放置在何处和何处?
这是我的自定义Paginator的代码:
public class HeaderedFlowDocumentPaginator : DocumentPaginator
{
private DocumentPaginator flowDocumentpaginator;
public HeaderedFlowDocumentPaginator(FlowDocument document)
{
flowDocumentpaginator = ((IDocumentPaginatorSource) document).DocumentPaginator;
}
public override bool IsPageCountValid
{
get { return flowDocumentpaginator.IsPageCountValid; }
}
public override int PageCount
{
get { return flowDocumentpaginator.PageCount; }
}
public override Size PageSize
{
get { return flowDocumentpaginator.PageSize; }
set { flowDocumentpaginator.PageSize = value; }
}
public override IDocumentPaginatorSource Source
{
get { return flowDocumentpaginator.Source; }
}
public override DocumentPage …Run Code Online (Sandbox Code Playgroud) 我正在WPF中写一个笔记记录应用程序,使用FlowDocument每个单独的笔记.该应用按标签搜索和过滤笔记.我想将当前筛选列表中的所有笔记打印为单独的文档,我只想在作业开头显示一个打印对话框.
我在这个帖子中找到了一个很好的打印示例,但它适用于打印单个FlowDocument,因此它使用CreateXpsDocumentWriter()显示打印对话框的重载.
所以,这是我的问题:任何人都可以提出一些好的代码来打印一个FlowDocument没有显示PrintDialog?我想我会在程序开始时显示打印对话框,然后循环我的笔记集以打印每个FlowDocument.
我有一个DataTable包含任意数量的列和行,我试图打印出来.到目前为止,我所拥有的最好的运气是将数据放入表中,然后将表添加到FlowDocument中.
到现在为止还挺好.我现在遇到的问题是表只"想要"占据文档宽度的大约一半.我已经为FlowDocument的PageWidth和ColumnWidth属性设置了适当的值,但Table似乎不想拉伸来填充分配的空间?
在上一个问题中,我试图找出如何将ObservableCollection绑定到控件,这样我就可以看到所有字符串并选择所有字符串并从内容控件中复制它们.这个问题的答案最终通过使用以下XAML得到了我想要的外观(看似行为).(我尝试了FlowDocumentReader和FlowDocumentScrollViewer - 它们的行为相同.)
<Grid>
<FlowDocumentScrollViewer>
<FlowDocument >
<Paragraph>
<ItemsControl ItemsSource="{Binding ErrorMessages, Mode=OneWay}" />
<Run Text="{Binding /, Mode=OneWay}" />
</Paragraph>
</FlowDocument>
</FlowDocumentScrollViewer>
</Grid>
Run Code Online (Sandbox Code Playgroud)
ErrorMessages是我的ViewModel属性,它返回一个ObservableCollection <string>.它正确绑定到ItemsSource,<Run>元素绑定到集合中的每个字符串.看起来不错,持续很长时间.这是如此接近我标记我的最后一个问题,但我仍有一个问题.
我右键单击,菜单显示" 选择所有"和" 复制"选项.使用全选,确实突出显示所有文本,选择复制问题没有错误,但当我转到NotePad(或Word,或TextPad等或表格上的RTB)并尝试粘贴文本时,没有任何显示.作为WPF的新手,我怀疑我做错了什么,但我不知道它是什么.那里没有"看不见"的文字吗?
[编辑 - 2011年6月22日]由于其他原因,我已经通过ItemsControl中的ItemTemplate更改了代码以使用TextBlock,如下所示,但我仍然无法复制和粘贴.
<DataTemplate x:Key="StringCollection">
<TextBlock TextWrapping="Wrap" Text="{Binding}" TextAlignment="Left"/>
</DataTemplate>
<!--... now down in the ItemsControl-->
<ItemsControl ItemsSource="{Binding ReceivedData, Mode=OneWay}"
ItemTemplate="{StaticResource StringCollection}" />
Run Code Online (Sandbox Code Playgroud) wpf copy-paste flowdocument flowdocumentscrollviewer flowdocumentreader
我在解决这个问题时遇到了一些麻烦,希望有人可以提供帮助.
我有一个带有RichTextBox的WPF项目.
当我编辑文本时,我希望文档中的光标始终保持垂直居中.
例如,在编辑时向上或向下推,而不是光标向上,我希望文本下降.这应该会导致光标停留的印象.
非常感谢.
我是C#Wpf的初学者,我想通过编程制作一个几乎没有paragrah的流程文档.问题是pagraph之间有一个很大的空间,我想把它调整到最小.
我通过使用Xml语句找到了一个解决方案,但我希望通过编程来实现:
<FlowDocument>
<FlowDocument.Resources>
<!-- This style is used to set the margins for all paragraphs in the FlowDocument to 0. -->
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0"/>
</Style>
</FlowDocument.Resources>
<Paragraph>
Spacing between paragraphs is caused by margins set on the paragraphs. Two adjacent margins
will "collapse" to the larger of the two margin widths, rather than doubling up.
</Paragraph>
<Paragraph>
To eliminate extra spacing between two paragraphs, just set the paragraph margins to 0.
</Paragraph>
</FlowDocument>
Run Code Online (Sandbox Code Playgroud)
我该怎么做 ?.
thanx对你有所帮助.