Получить автоматически определенное значение свойства FlowDocument.PageWidth

У меня есть WPF RichTextBox контроль, и я устанавливаю значение RichTextBox.Document.PageWidth собственность на double.NaN для того, чтобы значение было определено автоматически.

Теперь я хотел бы получить автоматически определенное значение, но я не могу сделать это, прочитав значение свойства, так как оно возвращает double.NaN,

РЕДАКТИРОВАТЬ

Я пытаюсь получить значение RichTextBox.DesiredSize в OnMyPropertyChanged метод свойства, который может быть установлен на auto (со значением double.NaN):

if (!double.IsNaN(MyProperty)) richTextBox.Width = MyProperty;
else richTextBox.Width = richTextBox.DesiredWidth;

Тем не мение, DesiredSize возвращает 0 на обеих осях.

2 ответа

Решение

Создать TextBlock элемент управления (не обязательно добавляя его к любому родительскому элементу управления), установите текстовое значение, необходимое для получения ширины, а также свойства шрифта (FontFamily, FontStyle, FontWeight, FontStretch а также FontSize), затем позвоните Measure метод контроля, так что он определяет значение его DesiredSize свойство, которое вы можете прочитать тогда.

Это по замыслу... RichTextBox должен был существовать в виде с фиксированной шириной. Обходной путь, который должен работать - поместите его в рамку и привяжите ширину текстового поля к значению ActualWidth границы.

Приветствия.

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