In this article we will be seeing how to create Silverlight Rich Text Box using Visual studio 2010.
Steps Involved:
Creating a Silverlight Application:
I. Open Visual Studio 2010.
ii. Go to File => New => Project.
iii. Select Silverlight from the Installed templates and choose the Silverlight Application template.
iv. Enter the Name and choose the location.
v. Click OK.
vi. In the New Silverlight Application wizard check the "Host the Silverlight Application in a new Web site".
vii. Click OK.
Creating the UI for the Rich Text Box:
i. Open MainPage.xaml file and replace the code with the following.
<UserControl x:Class="SilverlightRichTextBox.MainPage" Â xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Â xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Â xmlns:d="http://schemas.microsoft.com/expression/blend/2008" Â xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Â mc:Ignorable="d" Â d:DesignHeight="300" d:DesignWidth="310">
<Canvas Background="AntiqueWhite" Grid.RowSpan="2">
<StackPanel Height="20" Width="263" Canvas.Left="30" Canvas.Top="30" Orientation="Horizontal"> <Button Click="btnLAlignClick_Click"> <Image Source="/SilverlightRichTextBox;component/Images/LAlign.jpg"  Height="20"Width="20"></Image> </Button> <Button Click="btnRAlignClick_Click"> <Image Source="/SilverlightRichTextBox;component/Images/RAlign.jpg"  Height="20"Width="20"></Image> </Button> <Button Click="btnCAlignClick_Click"> <Image Source="/SilverlightRichTextBox;component/Images/CAlign.jpg"  Height="20"Width="20"></Image> </Button> <Button Click="btnJustifyClick_Click"> <Image Source="/SilverlightRichTextBox;component/Images/Justify.jpg"  Height="20"Width="20"></Image> </Button> <Button Click="btnBold_Click"> <Image  Source="/SilverlightRichTextBox;component/Images/B.jpg" Height="20"Width="20"></Image> </Button> <Button Click="btnItalic_Click"> <Image Source="/SilverlightRichTextBox;component/Images/I.jpg"  Height="20"Width="20"></Image> </Button> <Button Click="btnUnderline_Click"> <Image Source="/SilverlightRichTextBox;component/Images/U.jpg"  Height="20"Width="20"></Image> </Button> <Button Click="btnCut_Click"> <Image Source="/SilverlightRichTextBox;component/Images/cut.png"  ></Image> </Button> <Button Click="btnCopy_Click"> <Image Source="/SilverlightRichTextBox;component/Images/copy.png"  ></Image> </Button> <Button Click="btnPaste_Click"> <Image Source="/SilverlightRichTextBox;component/Images/paste.png"  ></Image> </Button> </StackPanel>
<StackPanel Height="20" Width="251" Canvas.Left="30" Canvas.Top="52"Â Orientation="Horizontal"> <ComboBox x:Name="cmbFonts" Width="80"SelectionChanged="cmbFonts_SelectionChanged"> <ComboBoxItem Content="Arial" Tag="Arial" FontFamily="Arial" IsSelected="True" Â FontSize="12"/> <ComboBoxItem Content="Arial Black" Tag="Arial Black" Â FontFamily="Arial Black" FontSize="12"/> <ComboBoxItem Content="Comic Sans MS" Tag="Comic Sans MS" Â FontFamily="Comic Sans MS" FontSize="12"/> <ComboBoxItem Content="Courier New" Tag="Courier New" Â FontFamily="Courier New" FontSize="12"/> <ComboBoxItem Content="Georgia" Tag="Georgia" FontFamily="Georgia" Â FontSize="12"/> <ComboBoxItem Content="Lucida Sans Unicode" Tag="Lucida Sans Unicode" Â FontFamily="Lucida Sans Unicode" FontSize="12"/> <ComboBoxItem Content="Portable User Interface" Tag="Portable User Interface" Â FontFamily="Portable User Interface" Â FontSize="12"/> <ComboBoxItem Content="Times New Roman" Tag="Times New Roman" Â FontFamily="Times New Roman" FontSize="12"/> <ComboBoxItem Content="Trebuchet MS" Tag="Trebuchet MS" Â FontFamily="Trebuchet MS" FontSize="12"/> <ComboBoxItem Content="Verdana" Tag="Verdana" FontFamily="Verdana" Â FontSize="12"/> <ComboBoxItem Content="Webdings" Tag="Webdings" FontSize="12"/> </ComboBox> <ComboBox x:Name="cmbFontSizes" Width="50"SelectionChanged="cmbFontSizes_SelectionChanged"> <ComboBoxItem Content="8" Tag="8"/> <ComboBoxItem Content="9" Tag="9"/> <ComboBoxItem Content="10" Tag="10" IsSelected="True"/> <ComboBoxItem Content="11" Tag="11"/> <ComboBoxItem Content="12" Tag="12"/> <ComboBoxItem Content="14" Tag="14"/> <ComboBoxItem Content="16" Tag="16"/> <ComboBoxItem Content="18" Tag="18"/> <ComboBoxItem Content="20" Tag="20"/> <ComboBoxItem Content="22" Tag="22"/> <ComboBoxItem Content="24" Tag="24"/> <ComboBoxItem Content="26" Tag="26"/> <ComboBoxItem Content="28" Tag="28"/> <ComboBoxItem Content="36" Tag="36"/> <ComboBoxItem Content="48" Tag="48"/> <ComboBoxItem Content="72" Tag="72"/> </ComboBox> <ComboBox x:Name="cmbFontColors" Width="65"SelectionChanged="cmbFontColors_SelectionChanged"> <ComboBoxItem Content="Red" Â Tag="FFFF0000"/> <ComboBoxItem Content="Green" Tag="FF008000"/> <ComboBoxItem Content="Blue" Tag="FF0000FF"/> <ComboBoxItem Content="Yellow" Tag="FFFFFF00"/> <ComboBoxItem Content="Black" Tag="FF000000" IsSelected="True"/> </ComboBox>
</StackPanel> <RichTextBox x:Name="myRTB" Canvas.Left="30" Canvas.Top="80"HorizontalAlignment="Left" VerticalAlignment="Top" Width="251" Height="187" Grid.Row="1" />
</Canvas>
</UserControl>
Functionalities performed by the Rich Text Box:
I. Right alignment.
ii. Left Alignment.
iii. Center Alignment.
iv. Justify.
v. Bold.
vi. Italic.
vii. Underline.
viii. Font Family.
ix. Font Sizes.
x. Font Color.
xi. Cut.
xii. Copy.
xiii. Paste.
Right Alignment:
       #region Right Alignment
Private void btnLAlignClick_Click(object sender, RoutedEventArgs e) Â Â Â Â Â Â Â { BlockCollection myBC = myRTB.Blocks;
foreach (Block bl in myBC)
           {
             bl.TextAlignment = TextAlignment.Left;
           }
       }
       #endregion
Left Alignment:
       #region Left Alignment
private void btnRAlignClick_Click (object sender, RoutedEventArgs e) Â Â Â Â Â Â Â { BlockCollection myBC = myRTB.Blocks; foreach (Block bl in myBC) Â Â Â Â Â Â Â Â Â Â Â { Â Â Â Â Â Â Â Â Â Â Â Â Â bl.TextAlignment = TextAlignment.Right; Â Â Â Â Â Â Â Â Â Â Â }
       }
       #endregion
Center Alignment:
 #region Center Alignment
private void btnCAlignClick_Click(object sender, RoutedEventArgs e)
       {
BlockCollection myBC = myRTB.Blocks;
foreach (Block bl in myBC)
           {
            bl.TextAlignment = TextAlignment.Center;
           }
       }
       #endregion
Justify:
  #region Justify
private void btnJustifyClick_Click(object sender, RoutedEventArgs e)
       {
BlockCollection myBC = myRTB.Blocks;
foreach (Block bl in myBC)
           {
             bl.TextAlignment = TextAlignment.Justify;
           }
       }
       #endregion
Bold:
   #region Bold private void btnBold_Click(object sender, RoutedEventArgs e)        { if (myRTB != null)            { if (myRTB.Selection.GetPropertyValue(Run.FontWeightProperty) is FontWeight && ((FontWeight)myRTB.Selection.GetPropertyValue(Run.FontWeightProperty)) == FontWeights.Normal)                myRTB.Selection.ApplyPropertyValue(Run.FontWeightProperty, FontWeights.Bold); else                 myRTB.Selection.ApplyPropertyValue(Run.FontWeightProperty, FontWeights.Normal);            }        }        #endregion
Italic:
#region Italic
private void btnItalic_Click(object sender, RoutedEventArgs e)
       {
if (myRTB != null)
           {
if (myRTB.Selection.GetPropertyValue(Run.FontStyleProperty) is FontStyle &&
((FontStyle)myRTB.Selection.GetPropertyValue(Run.FontStyleProperty)) ==
FontStyles.Normal)
              myRTB.Selection.ApplyPropertyValue(Run.FontStyleProperty, FontStyles.Italic);
else
               myRTB.Selection.ApplyPropertyValue(Run.FontStyleProperty, FontStyles.Normal);
           }
       }
       #endregion
Underline:
   #region Underline private void btnUnderline_Click(object sender, RoutedEventArgs e)        { if (myRTB != null)            { if (myRTB.Selection.GetPropertyValue(Run.TextDecorationsProperty) == null)                    myRTB.Selection.ApplyPropertyValue(Run.TextDecorationsProperty,TextDecorations.Underli ne); else                    myRTB.Selection.ApplyPropertyValue(Run.TextDecorationsProperty, null);            }        }        #endregion
Font Family:
 #region Font Family
private void cmbFonts_SelectionChanged(object sender, SelectionChangedEventArgs e)
       {
if (myRTB != null)
           {
              myRTB.Selection.ApplyPropertyValue(Run.FontFamilyProperty,
new FontFamily((cmbFonts.SelectedItem as ComboBoxItem).Tag.ToString()));
           }
       }
       #endregion
Font Sizes:
#region Font Sizes private void cmbFontSizes_SelectionChanged(object sender, SelectionChangedEventArgs e) Â Â Â Â Â Â Â { if (myRTB != null) Â Â Â Â Â Â Â Â Â Â Â { Â Â Â Â Â Â Â Â Â Â Â Â Â Â myRTB.Selection.ApplyPropertyValue(Run.FontSizeProperty,Double.Parse((cmbFontSizes.Sele ctedItem as ComboBoxItem).Tag.ToString())); Â Â Â Â Â Â Â Â Â Â Â } Â Â Â Â Â Â Â } Â Â Â Â Â Â Â #endregion
Font Color:
  #region Font Colors private void cmbFontColors_SelectionChanged(object sender, SelectionChangedEventArgs e)        { if (myRTB != null)            { string color = (cmbFontColors.SelectedItem as ComboBoxItem).Tag.ToString();
SolidColorBrush brush = new SolidColorBrush(Color.FromArgb( byte.Parse(color.Substring(0, 2), System.Globalization.NumberStyles.HexNumber), byte.Parse(color.Substring(2, 2), System.Globalization.NumberStyles.HexNumber), byte.Parse(color.Substring(4, 2), System.Globalization.NumberStyles.HexNumber), byte.Parse(color.Substring(6, 2), System.Globalization.NumberStyles.HexNumber))); Â Â Â Â Â Â Â Â Â Â myRTB.Selection.ApplyPropertyValue(Run.ForegroundProperty, brush); Â Â Â Â Â Â Â Â Â Â Â } Â Â Â Â Â Â Â }
       #endregion
Cut:
     #region Cut private void btnCut_Click(object sender, RoutedEventArgs e)        { Clipboard.SetText(myRTB.Selection.Text);          myRTB.Selection.Text = "";        }        #endregion
 Copy:
     #region Copy private void btnCopy_Click(object sender, RoutedEventArgs e)        { Clipboard.SetText(myRTB.Selection.Text);        }        #endregion
Paste:
    #region Paste
private void btnPaste_Click(object sender, RoutedEventArgs e)
       {
        myRTB.Selection.Text = Clipboard.GetText();
       }
       #endregion
Testing the solution:
I. Build the solution.
ii. Hit ctrl+F5.
Comments