Читать текстовое свойство C# Textblock, заполненное с использованием Inlines

Допустим, у меня есть пустой текстовый блок:

textblock1.Text = "";

Тогда я помещаю содержание Inlines только с этими двумя утверждениями:

textblock1.Inlines.Add(new Run() { Text = "A. ", Foreground = Brushes.Red });
textblock1.Inlines.Add(new Run() { Text = responses.Current.Value, Foreground = Brushes.Black});

Удивительно то, что я могу правильно визуализировать содержимое в своем окне, однако свойство Text в текстовом блоке остается пустым! Это вызывает проблему, потому что мне нужно передать значение этого текстового блока в другой текстовый блок.

Еще одна вещь, которую я не могу понять, это то, что когда я вызываю свою функцию во второй раз, свойство textblock1.Text обновляется правильно! Он корректно обновляется для каждого звонка, кроме первого! Я провел часы на MSDN, но я действительно в замешательстве. Более того, я могу прочитать это на сайте:

Свойство Text возвращает значение (добавленный текст всех элементов Run в InlineCollection). Однако возвращаемое значение не включает форматирование, примененное к элементам Run.

Я очень тщательно проверил свой код и отладил, чтобы увидеть, есть ли другое место, где я манипулирую этим свойством, но я не нашел его. Если у кого-то есть идеи, для меня эта вещь становится бессмысленной...

1 ответ

Решение

Просто чтобы уточнить мой комментарий, чтобы придать смысл,

Из документов MSDN

Загруженный означает, что логическое дерево, в котором содержится элемент, завершено

что помогает нам, так как привязка здесь имеет ссылку на другой TextBlock элемент. Привязки также зависят от DataContext и несколько других факторов, связанных с конкретными Binding но в целом они оцениваются после загрузки пользовательского интерфейса по уважительной причине.

Отсюда и установка Text источника TextBlock после загрузки пользовательского интерфейса все работает нормально, так как Bindingв этот момент активны.

Другие вопросы по тегам