当焦点丢失时,富文本框会保持选中状态

时间:2015-04-02 16:06:46

标签: c# wpf xaml richtextbox

我正在使用dockpanel创建一个简单的所见即所得编辑器,其中包含一些用于更改字体大小等的按钮,以及richtextbox作为主要区域。我可以突出显示文本,然后使用按钮更改字体的大小和族。但是,当我单击“工具栏”时,RichTextBox会失去焦点,并且不再突出显示所选文本。我找到了几个hacky解决方案,例如在丢失的焦点事件上设置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" />

2 个答案:

答案 0 :(得分:1)

啊,解决这个问题的方法是简单地使用<toolbar>而不是<dockpanel>来容纳我的按钮。这似乎完全符合我的要求。

答案 1 :(得分: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);
    }