Читать текстовое свойство 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 ответ
Просто чтобы уточнить мой комментарий, чтобы придать смысл,
Загруженный означает, что логическое дерево, в котором содержится элемент, завершено
что помогает нам, так как привязка здесь имеет ссылку на другой TextBlock
элемент. Привязки также зависят от DataContext
и несколько других факторов, связанных с конкретными Binding
но в целом они оцениваются после загрузки пользовательского интерфейса по уважительной причине.
Отсюда и установка Text
источника TextBlock
после загрузки пользовательского интерфейса все работает нормально, так как Binding
в этот момент активны.