2015-04-02 90 views
0

我正在使用dockpanel创建一个简单的wysiwyg编辑器,其中包含用于更改字体大小等的一些按钮以及作为主要区域的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

这不适用于我的情况。这也意味着需要将相同的代码应用于所有按钮/组合框事件。这似乎非常多余。 – user1336827 2015-04-02 16:33:55

相关问题