Как связать данные с помощью расширенного текстового поля с шаблоном MVVM? - PullRequest
6 голосов
/ 16 января 2012

Как динамически связывать данные с помощью свойства документа расширенного текстового поля. Я использую MVVM в Wpf с C #?

EDIT:

Я пытался с этим примером в "codeproject.com/KB/WPF/BindableWPFRichTextBox.aspx"; но я не могу понять, что происходит в этом примере. Я очень новичок в WPF и MVVM.

Выдает ошибку в строке

try { 
  var stream = new MemoryStream(Encoding.UTF8.GetBytes(GetDocumentXaml(richTextBox)));
  var doc = (FlowDocument)XamlReader.Load(stream); 
  // Set the document 
  richTextBox.Document = doc; 
} 
catch (Exception) { richTextBox.Document = new FlowDocument(); }

ошибка похожа на «Недопустимые данные на корневом уровне. Строка 1, позиция 1». я даю значение как "Образец текста"

Я обнаружил, что текст xaml должен выглядеть как

<FlowDocument PagePadding="5,0,5,0" AllowDrop="True" xmlns="schemas.microsoft.com/winfx/2006/xaml/… generated by app back-end</Paragraph>
</FlowDocument>" But how to get this text?

1 Ответ

2 голосов
/ 16 января 2012

Надеюсь, я правильно истолковал ваш вопрос: Я предполагаю, что вы связываетесь с нормальной строкой (образец текста) с помощью RichTextBox, который вы получили из codeproject. Это не будет работать, потому что документ, который вы должны связать, является FlowDocument и имеет определенный формат. Если вы назначите строку, вы получите сообщение об ошибке «Неверные данные» при попытке создать FlowDocument из строки

Вот ссылка на то, как создать FlowDocument через XAML или через CodeBehind. http://msdn.microsoft.com/en-us/library/aa970909.aspx

Затем в игру вступает конвертер: из строкового представления он создает настоящий FlowDocument.

Итак, если вы хотите отобразить образец текста привязки к строке в виртуальной машине, как это:

<FlowDocument PagePadding=\"5,0,5,0\" AllowDrop=\"True\" " 
                + "xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">"
                + "<Paragraph>Your sample text</Paragraph></FlowDocument>"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...