Как извлечь размер шрифта контента - PullRequest
1 голос
/ 01 марта 2012

Я работал над созданием своего собственного небольшого текстового редактора, используя RichTextBox (MyRTB).Я сделал Combobox, чтобы изменить шрифт выделенного текста в RichTextBox, когда значение изменяется с помощью этого блока кода:

private void CmbFont_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (MyRTB != null)
        {                
            string fontsize = (((ComboBoxItem)CmbFont.SelectedItem).Content).ToString();
            MyRTB.Selection.ApplyPropertyValue(Run.FontSizeProperty, fontsize);
        }
    }

Теперь я хотел бы, чтобы значение моего Combobox менялось каждый раз, когда я выбираюстрока текста в RichTextBox, которая имеет другой размер шрифта.Возможно ли это?

Спасибо

1 Ответ

1 голос
/ 04 марта 2012

Добавить обработчик события к выбранному измененному событию. В этом обработчике события получите TextElement.FontSizeProperty из выбора RichTextBox

...
MyRTB.SelectionChanged += OnSelectionChanged;
...


void OnSelectionChanged()
{
 var fontSize = MyRTB.Selection.GetPropertyValue(TextElement.FontSizeProperty);
 if (fontSize == DependencyProperty.UnsetValue)
 {
  // Selection has text with different font sizes.
 }
 else {
  // (double)fontSize is the current font size. Update Cmb_Font.. 
 }
}

Убедитесь, что вы не вызываете OnSelectionChanged и CmbFont_SelectionChanged рекурсивно.

...