2015-04-02 5 views
0

Я создаю простой редактор wysiwyg с помощью dockpanel с некоторыми кнопками для изменения размера шрифта и т. Д. И richtextbox в качестве основной области. Я могу выделить текст, а затем использовать кнопки для изменения размера и семейства шрифта. Однако, когда я нажимаю «панель инструментов», RichTextBox теряет фокус, и выделенный текст больше не выделяется. Я нашел несколько хакерских решений, таких как установка e.handled =true; на событие потерянного фокуса, это работает, но если размер шрифта изменяется, например, текст теперь больше, чем выделение. Есть ли лучшее решение для этого?Богатое текстовое поле остается выделенным, когда фокус потерян

Вот некоторые урезанная код:

<DockPanel> 
     <DockPanel > 
      <ToggleButton Height="24" Margin="3" Name="Bold"> 
       <TextBlock FontWeight="ExtraBold" Text="B" /> 
      </ToggleButton> 
      <ToggleButton Height="24" Margin="3" Name="Italic"> 
       <TextBlock FontStyle="Italic" Text="I" /> 
      </ToggleButton> 
      <ToggleButton Height="24" Margin="3" Name="Underline"> 
       <TextBlock TextDecorations="Underline" Text="U" /> 
      </ToggleButton> 
      <ComboBox Height="24" Margin="3" Name="FontFamily" Width="150" SelectionChanged="FontFamily_SelectionChanged"/> 
      <ComboBox Height="24" Margin="3" Name="FontSize" Width="50" IsEditable="True" TextBoxBase.TextChanged="FontSize_TextChanged" /> 
     </DockPanel> 
    </DockPanel> 
    <RichTextBox Name="Editor" /> 

ответ

1

Ах, Решение этой проблемы было просто использовать <toolbar>, а не <dockpanel> к дому мои кнопки. Это похоже на то, что я хочу.

0

Попробуйте это:

private void ButtonBase_OnClick(object sender, RoutedEventArgs e) 
    { 
     currentSize ++; 
     RichTextBox.Selection.ApplyPropertyValue(TextElement.FontSizeProperty, currentSize); 
     Keyboard.Focus(RichTextBox); 
     RichTextBox.Selection.Select(RichTextBox.Selection.Start, RichTextBox.Selection.End); 
    } 
+0

Это не работает в моем случае. Также это будет означать, что один и тот же код должен применяться ко всем событиям кнопок/combobox. Это кажется излишним. – user1336827

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