2009-12-29 1 views
0

У меня есть FlowDocument с названием Span»test1" , который я хочу, чтобы заменить содержимое программноИмена элементов потока WPF сбрасываются?

TextRange tr = new TextRange(this.test1.ContentStart,this.test1.ContentEnd); 
Run run = this.test1.Inlines.First() as Run; 

run.Text = "replaced text"; 

Это работает, однако проблема при выполнении обновления имени пролета удаляется (если смотреть на источник xaml). Это по дизайну? Есть ли способ сохранить идентификаторы? Привет, это метод я использую для отладки, Что на самом деле в RichTextBox (настройка XAML источник текстовое поле)

использованием (MemoryStream мс = новое MemoryStream()) { тр = новый TextRange (this.richTextBox1.Document .ContentStart, this.richTextBox1.Document.ContentEnd); tr.Save (ms, DataFormats.Xaml); ms.Position = 0;

  using (StreamReader sr = new StreamReader(ms)) 
      { 
       this.textBox1.Text = sr.ReadToEnd(); 
      } 
     } 

Это тест содержание RichTextBox:

<FlowDocument> 
     <Paragraph> 
      This is my first <Span Name="test1">a huge amount of space</Span> between it and the second paragraph? 
     </Paragraph> 
    </FlowDocument> 
+0

Как вы смотрите на источник xaml? Что вы подразумеваете под идентификацией? Не могли бы вы также опубликовать свой код Xaml с помощью flowdocument? – Anvaka

+0

Привет, Я сохраняю содержимое текстового диапазона, охватывающего весь документ, как DataFormats.Xaml для строки, которую я просматриваю в текстовом поле для целей отладки. С Id я имею в виду просто атрибут Name в элементе span – Homde

ответ

0

К сожалению, это только способ FlowDocuments работы (то же самое с бирками). Единственное решение (очень hacky), которое я нашел для этого, - это скрыть имя в свойстве FontFamily. Это работает, потому что это свойство представляет собой список строк с разделителями-запятыми, причем первая строка соответствует существующему семейству шрифтов, а остальные игнорируются. Поэтому, если вы сделаете что-то вроде этого:

document.FontFamily = "RealFont1, RealFont2, name=test1"; 

Вся строка будет сохранена. Затем вы можете получить доступ к «имени», выполнив поиск в FontFamily для «name =».

Опять же, довольно взломанный, но после нескольких месяцев попыток это было единственное решение, которое я смог найти.

 Смежные вопросы

  • Нет связанных вопросов^_^