2015-04-02 88 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

相關問題