У меня есть текстовый файл (. Txt) , мне нужно вставить его в мой RichTextBox
. Я создал класс, изначально предназначенный для чтения RTF-файлов в XAML, но добавил изменения, соответствующие моим потребностям. Это класс:
public class TextToXAML: DependencyObject
{
public static string GetDocumentContent(DependencyObject obj)
{
return (string)obj.GetValue(DocumentContentProperty);
}
public static void SetDocumentContent(DependencyObject obj, string value)
{
obj.SetValue(DocumentContentProperty, value);
}
public static readonly DependencyProperty DocumentContentProperty =
DependencyProperty.RegisterAttached(
"DocumentContent",
typeof(string), typeof(TextToXAML),
new FrameworkPropertyMetadata
{
BindsTwoWayByDefault = true,
PropertyChangedCallback = (obj, e) =>
{
var richTextBox = (RichTextBox)obj;
// Parse the XAML to a document (or use XamlReader.Parse())
var xaml = GetDocumentContent(richTextBox);
var doc = new FlowDocument();
var range = new TextRange(doc.ContentStart, doc.ContentEnd);
using (var reader = new MemoryStream(Encoding.UTF8.GetBytes(xaml)))
{
reader.Position = 0;
richTextBox.SelectAll();
richTextBox.Selection.Load(reader, DataFormats.Html);
}
}
});
}
И мой XAML таков:
<RichTextBox local:TextToXAML.DocumentContent="{Binding Document}">
Граница Document
на самом деле от моего ViewModel
, а содержимое выглядит примерно так:
[Title]
Title = The Title
[Sub Title]
The Subtitle
<br>
Content
Выше приведен фактический формат, я только что изменил текст. Однако я получил эту ошибку:
"Формат данных HTML не поддерживается".
Примечание : Если вы заметили, Я использовал термин "HTML -подобный" , это из-за <br>
. Это единственное HTMLi sh содержимое в файле, пожалуйста, исправьте меня, если я ошибаюсь.
Примечание 2 : Я потом понимаю, что это INI файл записан в виде текстового файла.