RichTextEditor.xaml 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <UserControl x:Class="InABox.DynamicGrid.RichTextEditor"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  6. xmlns:sf="http://schemas.syncfusion.com/wpf"
  7. xmlns:dynamicGrid="clr-namespace:InABox.DynamicGrid"
  8. mc:Ignorable="d"
  9. d:DesignHeight="450" d:DesignWidth="800">
  10. <UserControl.DataContext>
  11. <dynamicGrid:RichTextEditorViewModel x:Name="ViewModel"/>
  12. </UserControl.DataContext>
  13. <UserControl.Resources>
  14. <dynamicGrid:ButtonVisibleConverter x:Key="ToolbarVisibleConverter" Flag="None"/>
  15. <dynamicGrid:ButtonVisibleConverter x:Key="AlignVisibleConverter" Flag="Align"/>
  16. <dynamicGrid:ButtonVisibleConverter x:Key="BoldVisibleConverter" Flag="Bold"/>
  17. <dynamicGrid:ButtonVisibleConverter x:Key="ColorVisibleConverter" Flag="Color"/>
  18. <dynamicGrid:ButtonVisibleConverter x:Key="FontVisibleConverter" Flag="Font"/>
  19. <dynamicGrid:ButtonVisibleConverter x:Key="HyperlinkVisibleConverter" Flag="Hyperlink"/>
  20. <dynamicGrid:ButtonVisibleConverter x:Key="ItalicVisibleConverter" Flag="Italic"/>
  21. <dynamicGrid:ButtonVisibleConverter x:Key="PictureVisibleConverter" Flag="Picture"/>
  22. <dynamicGrid:ButtonVisibleConverter x:Key="TableVisibleConverter" Flag="Table"/>
  23. <dynamicGrid:ButtonVisibleConverter x:Key="UnderlineVisibleConverter" Flag="Underline"/>
  24. <dynamicGrid:ButtonVisibleConverter x:Key="ZoomVisibleConverter" Flag="Zoom"/>
  25. <sf:FontFamilyStringConverter x:Key="FontFamilyStringConverter" />
  26. <sf:UnderlineToggleConverter x:Key="UnderlineToggleConverter" />
  27. <sf:LeftAlignmentToggleConverter x:Key="LeftAlignmentToggleConverter" />
  28. <sf:RightAlignmentToggleConverter x:Key="RightAlignmentToggleConverter" />
  29. <sf:CenterAlignmentToggleConverter x:Key="CenterAlignmentToggleConverter" />
  30. <sf:JustifyAlignmentToggleConverter x:Key="JustifyAlignmentToggleConverter" />
  31. </UserControl.Resources>
  32. <Border BorderBrush="DarkGray" BorderThickness="0.75" CornerRadius="2">
  33. <DockPanel>
  34. <sf:ToolBarAdv x:Name="Toolbar" DockPanel.Dock="Top" Focusable="False" GripperVisibility="Collapsed"
  35. IsOverflowOpen="False"
  36. Visibility="{Binding VisibleButtons, Converter={StaticResource ToolbarVisibleConverter}}">
  37. <ComboBox Margin="12 2 0 2" Focusable="False" Width="160" x:Name="fontFamilyCombo"
  38. SelectedValue="{Binding Path=Selection.CharacterFormat.FontFamily, Mode=TwoWay, ElementName=Editor, Converter={StaticResource FontFamilyStringConverter}}"
  39. ItemsSource="{Binding Path=FontFamilySource}"
  40. Visibility="{Binding VisibleButtons, Converter={StaticResource FontVisibleConverter}}"/>
  41. <ComboBox Margin="12 2 0 2" IsTabStop="False" Width="45" x:Name="fontSizeCombo" SelectedIndex="3"
  42. ItemsSource="{Binding Path=FontSizeSource}"
  43. SelectedValue="{Binding Path=Selection.CharacterFormat.FontSize ,Mode=TwoWay,ElementName=Editor}"
  44. Visibility="{Binding VisibleButtons, Converter={StaticResource FontVisibleConverter}}"/>
  45. <sf:ColorPickerPalette x:Name="fontColorPicker" Margin="12 2 0 2" IsTabStop="False" Width="60"
  46. Mode="Split" MoreColorOptionVisibility="Collapsed"
  47. StandardPanelVisibility="Collapsed"
  48. Color="{Binding Path=Selection.CharacterFormat.FontColor ,Mode=TwoWay, ElementName=Editor}"
  49. Visibility="{Binding VisibleButtons, Converter={StaticResource ColorVisibleConverter}}"/>
  50. <sf:ButtonAdv x:Name="Bold" Margin="12 2 0 2" Focusable="False" SizeMode="Small" IsCheckable="True"
  51. IsChecked="{Binding ElementName=Editor, Path=Selection.CharacterFormat.Bold, Mode=TwoWay}"
  52. Visibility="{Binding VisibleButtons, Converter={StaticResource BoldVisibleConverter}}"/>
  53. <sf:ButtonAdv x:Name="Italic" Margin="12 2 0 2" Focusable="False" SizeMode="Small" IsCheckable="True"
  54. IsChecked="{Binding ElementName=Editor,Path=Selection.CharacterFormat.Italic,Mode=TwoWay}"
  55. Visibility="{Binding VisibleButtons, Converter={StaticResource ItalicVisibleConverter}}"/>
  56. <sf:ButtonAdv x:Name="Underline" Margin="12 2 0 2" Focusable="False" SizeMode="Small"
  57. IsCheckable="True"
  58. IsChecked="{Binding ElementName=Editor, Path=Selection.CharacterFormat.Underline, Mode=TwoWay, Converter={StaticResource UnderlineToggleConverter}}"
  59. Visibility="{Binding VisibleButtons, Converter={StaticResource UnderlineVisibleConverter}}"/>
  60. <sf:ToolBarItemSeparator Margin="12 2 0 2"
  61. Visibility="{Binding VisibleButtons, Converter={StaticResource AlignVisibleConverter}}"/>
  62. <sf:ButtonAdv x:Name="AlignLeft" Margin="12 2 0 2" Focusable="False" SizeMode="Small"
  63. IsCheckable="True"
  64. IsChecked="{Binding ElementName=Editor, Path=Selection.ParagraphFormat.TextAlignment, Converter={StaticResource LeftAlignmentToggleConverter}, Mode=TwoWay}"
  65. Visibility="{Binding VisibleButtons, Converter={StaticResource AlignVisibleConverter}}"/>
  66. <sf:ButtonAdv x:Name="AlignCentre" Margin="12 2 0 2" Focusable="False" SizeMode="Small"
  67. IsCheckable="True"
  68. IsChecked="{Binding ElementName=Editor, Path=Selection.ParagraphFormat.TextAlignment, Converter={StaticResource CenterAlignmentToggleConverter}, Mode=TwoWay}"
  69. Visibility="{Binding VisibleButtons, Converter={StaticResource AlignVisibleConverter}}"/>
  70. <sf:ButtonAdv x:Name="AlignRight" Margin="12 2 0 2" Focusable="False" SizeMode="Small"
  71. IsCheckable="True"
  72. IsChecked="{Binding ElementName=Editor, Path=Selection.ParagraphFormat.TextAlignment, Converter={StaticResource RightAlignmentToggleConverter}, Mode=TwoWay}"
  73. Visibility="{Binding VisibleButtons, Converter={StaticResource AlignVisibleConverter}}"/>
  74. <sf:ButtonAdv x:Name="AlignJustify" Margin="12 2 0 2" Focusable="False" SizeMode="Small"
  75. IsCheckable="True"
  76. IsChecked="{Binding ElementName=Editor, Path=Selection.ParagraphFormat.TextAlignment, Converter={StaticResource JustifyAlignmentToggleConverter}, Mode=TwoWay}"
  77. Visibility="{Binding VisibleButtons, Converter={StaticResource AlignVisibleConverter}}"/>
  78. <sf:ToolBarItemSeparator Margin="12 2 0 2"
  79. Visibility="{Binding VisibleButtons, Converter={StaticResource AlignVisibleConverter}}"/>
  80. <sf:ButtonAdv x:Name="Hyperlink" Margin="12 2 0 2" Focusable="False" SizeMode="Small"
  81. Command="sf:SfRichTextBoxAdv.ShowHyperlinkDialogCommand"
  82. CommandTarget="{Binding ElementName=Editor}"
  83. Visibility="{Binding VisibleButtons, Converter={StaticResource HyperlinkVisibleConverter}}"/>
  84. <sf:ButtonAdv x:Name="Picture" Margin="12 2 0 2" Focusable="False" SizeMode="Small"
  85. Command="sf:SfRichTextBoxAdv.InsertPictureCommand"
  86. CommandTarget="{Binding ElementName=Editor}"
  87. Visibility="{Binding VisibleButtons, Converter={StaticResource PictureVisibleConverter}}"/>
  88. <sf:ButtonAdv x:Name="Table" Margin="12 2 0 2" Focusable="False" SizeMode="Small"
  89. Command="sf:SfRichTextBoxAdv.ShowInsertTableDialogCommand"
  90. CommandTarget="{Binding ElementName=Editor}"
  91. Visibility="{Binding VisibleButtons, Converter={StaticResource TableVisibleConverter}}"/>
  92. <sf:ToolBarItemSeparator Margin="12 2 0 2" Visibility="{Binding VisibleButtons, Converter={StaticResource ZoomVisibleConverter}}" />
  93. <sf:ButtonAdv x:Name="ZoomIn" Margin="12 2 0 2" Focusable="False" SizeMode="Small"
  94. SmallIcon="/InABox.Wpf;Component/Resources/zoomin.png" Click="ZoomIn_Click"
  95. Visibility="{Binding VisibleButtons, Converter={StaticResource ZoomVisibleConverter}}"/>
  96. <sf:ButtonAdv x:Name="ZoomOut" Margin="12 2 0 2" Focusable="False" SizeMode="Small"
  97. SmallIcon="/InABox.Wpf;Component/Resources/zoomout.png" Click="ZoomOut_Click"
  98. Visibility="{Binding VisibleButtons, Converter={StaticResource ZoomVisibleConverter}}"/>
  99. </sf:ToolBarAdv>
  100. <sf:SfRichTextBoxAdv x:Name="Editor" DockPanel.Dock="Top" EnableMiniToolBar="False"
  101. ContentChanged="RichTextBoxAdv_ContentChanged" BorderThickness="0"
  102. LostFocus="RichTextBoxAdv_LostFocus" OverridesDocumentBackground="True"
  103. LayoutType="Continuous"
  104. RequestNavigate="Editor_RequestNavigate"
  105. >
  106. <sf:SfRichTextBoxAdv.HtmlImportExportSettings>
  107. <sf:HtmlImportExportSettings ImageNodeVisited="HtmlImportExportSettings_OnImageNodeVisited"></sf:HtmlImportExportSettings>
  108. </sf:SfRichTextBoxAdv.HtmlImportExportSettings>
  109. </sf:SfRichTextBoxAdv>
  110. </DockPanel>
  111. </Border>
  112. </UserControl>