我想在RichTextBox Editor中以编程方式触发以下函数。
我已经有了这个:
//Copy
TextRange range = new TextRange(doc.Editor.Selection.Start, doc.Editor.Selection.End);
Clipboard.SetText(range.Text);
//Paste
Editor.Paste();
// PageDown
Editor.PageDown();
// PageUp
Editor.PageUp();
//Text Size
Editor.FontSize = number;
//Undo
Editor.Undo();
//Redo
Editor.Redo();
我想将以下内容应用于RichTextBox上当前选定的文本:
AlignLeft
AlignRight
中心
增加/减少行间距
粗体
下划线
斜体
答案 0 :(得分:4)
事实证明,有两种方法可以设置RichTextBox
的文本样式。
其中一个是改变控件段落的样式。这仅适用于段落 - 而不是选择。
您可以通过.Document.Blocks
的{{1}}属性获取可以转换为段落的块集合。这是一个代码示例,它将一些样式应用于第一段。
RichTextBox
如果可能,这是应用样式的首选方式。虽然它确实需要您编写更多代码,但它提供了编译时类型检查。
The other, would be to apply them to a text range
这允许您将样式应用于选择,但不进行类型检查。
Paragraph firstParagraph = Editor.Document.Blocks.FirstBlock as Paragraph;
firstParagraph.TextAlignment = TextAlignment.Right;
firstParagraph.TextAlignment = TextAlignment.Left;
firstParagraph.FontWeight = FontWeights.Bold;
firstParagraph.FontStyle = FontStyles.Italic;
firstParagraph.TextDecorations = TextDecorations.Underline;
firstParagraph.TextIndent = 10;
firstParagraph.LineHeight = 20;
要非常小心,始终将正确的类型传递给ApplyPropertyValue函数,因为它不支持编译时类型检查。
例如,如果LineHeightProperty设置为TextRange selectionRange = Editor.Selection as TextRange;
selectionRange.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Bold);
selectionRange.ApplyPropertyValue(TextElement.FontStyleProperty, FontStyles.Italic);
selectionRange.ApplyPropertyValue(Inline.TextDecorationsProperty, TextDecorations.Underline);
selectionRange.ApplyPropertyValue(Paragraph.LineHeightProperty, 45.0);
selectionRange.ApplyPropertyValue(Paragraph.TextAlignmentProperty, TextAlignment.Right);
,而不是预期的45
Int32
,则会获得运行时Double
。