如何从richtextbox WPF中删除任何格式(粗体,斜体,字体,字体大小)

时间:2014-12-02 15:16:34

标签: wpf format richtextbox

我正在WPF中制作一个文本编辑器程序,我需要制作一个Plain按钮,它的目的是删除文本的格式(粗体,斜体,字体,如arial,字体大小)。 richtextbox

到目前为止,这是我的代码:

<Window x:Class="TextEditor.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:TextEditor"
    Title="Text Editor" Height="480" Width="640">
<DockPanel>
    <Menu DockPanel.Dock="Top">

        <MenuItem Header="_File" Name="Menu">
            <MenuItem Header="New" Name="New"
                      Click="New_Click"

              />

            <MenuItem Header="Save" Name="Save"
                      Click="Save_Click"
                  />

        

    <DockPanel DockPanel.Dock="Top">


            <ToolBar>

            <ToggleButton x:Name="boldButton"
                          ToolTip="Bold"
                          Command="{x:Static EditingCommands.ToggleBold}" CommandTarget="{Binding ElementName=_richTextBox}">

                <Image Source="Icons/text_bold.png"
                        Height="25"
                        Width="25"/>

                </ToggleButton>

                <ToggleButton x:Name="italicButton"
                          ToolTip="Italic"
                          Command="{x:Static EditingCommands.ToggleItalic}" CommandTarget="{Binding ElementName=_richTextBox}">
                    <Image Source="Icons/text_italic.png"
                        Height="25"
                        Width="25"/>


                </ToggleButton>

            <ToggleButton x:Name="PlainButton"
                    ToolTip="Make the text plain"
                    Click="PlainButton_Click">
                PlainText
            </ToggleButton>

            <Button x:Name="BackgroundButton"
                    ToolTip="Change the background of the textbox"
                    Click="BackgroundButton_Click">
                    Change the background


            </Button>








                <Separator/>

                <ComboBox x:Name="fonts"
                      MinWidth="100"
                      DataContext="{x:Static Fonts.SystemFontFamilies}"
                      ItemsSource="{Binding}"
                      ToolTip="Font"
                       SelectionChanged="Font_SelectionChanged"/>

            <ComboBox x:Name="fontSize"
                      MinWidth="40"
                      ToolTip="Font Size"

                      >






            </ComboBox>

            </ToolBar>


        </DockPanel>











        <StatusBar DockPanel.Dock="Bottom">
        <TextBlock x:Name="status"/>            
    </StatusBar>

    <RichTextBox x:Name="body"
                 FontSize="{Binding ElementName=fontSize, Path=SelectedItem}"

                 SpellCheck.IsEnabled="True"
                 AcceptsReturn="True"
                 AcceptsTab="True"
                 SelectionChanged="body_SelectionChanged"
                 BorderThickness="0 2 0 0"/>






</DockPanel>

C剧本:

public MainWindow()
    {
        InitializeComponent();
        for (double i = 8; i <= 48; i += 2)
        {
            fontSize.Items.Add(i);
        }




    }



    private void body_SelectionChanged(object sender, RoutedEventArgs e)
    {

        object temp = body.Selection.GetPropertyValue(Inline.FontFamilyProperty);
        fonts.SelectedItem = temp;



    }



    private void New_Click(object sender, RoutedEventArgs e)
    {
        body.Document.Blocks.Clear();
    }

    private void Save_Click(object sender, RoutedEventArgs e)
    {
        SaveFileDialog sfd = new SaveFileDialog();
        sfd.Filter = "Text file|*.txt";
        sfd.FileName = "Untitled document";

        if (sfd.ShowDialog() == true)
        {
            FileStream fileStream = new FileStream(sfd.FileName, FileMode.Create);
            TextRange range = new TextRange(body.Document.ContentStart, body.Document.ContentEnd);
            range.Save(fileStream, DataFormats.Text);
        }
    }

    private void Font_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (fonts.SelectedItem != null)
            body.Selection.ApplyPropertyValue(Inline.FontFamilyProperty, fonts.SelectedItem);
    }



    private void PlainButton_Click(object sender, RoutedEventArgs e)
    {

      //the code of the plain button

    }

    private void BackgroundButton_Click(object sender, RoutedEventArgs e)
    {
        body.Background = Brushes.Yellow;

    }

2 个答案:

答案 0 :(得分:0)

它是2009年的解决方案......我不知道.NET中的richtext API是否有所改进,但是this post seems to have a solution for what you need

答案 1 :(得分:0)

如果您仍在寻找答案,请使用以下代码进行WPF。

myRichTextBox.SelectAll();
myRichTextBox.Selection.ClearAllProperties();