编码文本在RichTextBox从WPF工具包
本文关键字:WPF 工具包 RichTextBox 文本 编码 | 更新日期: 2023-09-27 18:12:17
我想在WPF工具包的RichTextBox中编写一些带有度(°)符号的文本。
我只是试过
Section section = new Section();
Paragraph paragraph = new Paragraph();
section.Blocks.Add(paragraph);
string str = string.Format("Temperature : {0:0.00}°C", temp);
text = new Run(str);
paragraph.Inlines.Add(text);
TemperatureText = System.Windows.Markup.XamlWriter.Save(section);
但是度数符号被替换为"?"。我还试图直接编写unicode string.Format("Temperature : {0:0.00}'u00B0C", temp)
,但它也失败了。
你知道吗?谢谢!
[编辑]
我使用XamlFormatter的RichTextBox
尝试实现您自己的格式化器,它的行为类似于XAMLFormatter,但使用UTF8编码:
public class MyXamlFormatter : ITextFormatter
{
public string GetText( System.Windows.Documents.FlowDocument document )
{
TextRange tr = new TextRange( document.ContentStart, document.ContentEnd );
using( MemoryStream ms = new MemoryStream() )
{
tr.Save( ms, DataFormats.Xaml );
return Encoding.UTF8.GetString(ms.ToArray());
}
}
public void SetText( System.Windows.Documents.FlowDocument document, string text )
{
try
{
if( String.IsNullOrEmpty( text ) )
{
document.Blocks.Clear();
}
else
{
TextRange tr = new TextRange( document.ContentStart, document.ContentEnd );
using( MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(text)))
{
tr.Load( ms, DataFormats.Xaml );
}
}
}
catch
{
throw new InvalidDataException( "Data provided is not in the correct Xaml format." );
}
}
}
在XAML中:
<wtk:RichTextBox.TextFormatter>
<myNameSpace:MyXamlFormatter/>
</wtk:RichTextBox.TextFormatter>