or

internal class CustomMenuBuilder : ContextMenuContentBuilder, IDisposable { private RadMenuItem InsertHyperLink; private MyCustomRichTextBox richTextBox; public CustomMenuBuilder(MyCustomRichTextBox richTextBox) : base(richTextBox) { this.richTextBox = richTextBox; InsertHyperLink= new RadMenuItem { Header = CultureTasks.GetUIString("Infologic.Composite.Views.ILEditeur.CustomMenuBuilder.Message01", "Insert hyperlink"), Icon = new Image() { Source = new BitmapImage(new Uri("pack://application:,,,/Telerik.Windows.Controls.RichTextBoxUI;component/Images/MSOffice/16/Inserthyperlink.png")) } }; InsertHyperLink.Tag = richTextBox; InsertHyperLink.Click += InsertHyperlink_Click; } void InsertHyperlink_Click(object sender, Telerik.Windows.RadRoutedEventArgs e) { this.richTextBox.MyInsertHyperlink(); } protected override ContextMenuGroup CreateFieldCommands() { return null; } protected override ContextMenuGroup CreateHyperlinkCommands(bool forExistingHyperlink) { return null; } protected override ContextMenuGroup CreateTextEditCommands() { var commands = base.CreateTextEditCommands(); commands.Add(InsertHyperLink); // OK //commands.Insert(0, InsertHyperLink); // KO -> stack overflow return commands; } public void Dispose() { InsertHyperLink.Click -= InsertHyperlink_Click; InsertHyperLink= null; richTextBox = null; } }var richTextControl = new MyCustomRichTextBox { Name = string.Format("rtb{0}", increment), AcceptsTab = false, LayoutMode = DocumentLayoutMode.Flow, IsSelectionMiniToolBarEnabled = false, DocumentInheritsDefaultStyleSettings = true, FontFamily = fontFamily, ShowMergeFieldsHighlight = true, FontSize = fontSize, HorizontalScrollBarVisibility = ScrollBarVisibility.Auto };var builder = new CustomMenuBuilder(richTextControl);richTextControl.ContextMenu = new Telerik.Windows.Controls.RichTextBoxUI.ContextMenu();((Telerik.Windows.Controls.RichTextBoxUI.ContextMenu)richTextControl.ContextMenu).ContentBuilder = builder;<telerik:RadCartesianChart Grid.Column="1" Grid.Row="0" Grid.RowSpan="2" Margin="0,0,0,3" x:Name="lineSeries" ClipToBounds="False"> <telerik:RadCartesianChart.VerticalAxis> <telerik:LinearAxis IsInverse="True" Name="verticalAxis" Title="Depth(µm)"/> </telerik:RadCartesianChart.VerticalAxis> <telerik:RadCartesianChart.HorizontalAxis> <telerik:LinearAxis Name="horizontalAxis" Title="Concentration(µmol/l)"/> </telerik:RadCartesianChart.HorizontalAxis> <telerik:ScatterPointSeries x:Name="pointSeries" XValueBinding="XValue" YValueBinding="YValue" ItemsSource="{Binding}"> <telerik:ScatterPointSeries.PointTemplate> <DataTemplate> <Ellipse Width="17" Height="17" Fill="Blue"/> </DataTemplate> </telerik:ScatterPointSeries.PointTemplate> </telerik:ScatterPointSeries> <telerik:ScatterLineSeries ItemsSource="{Binding}" StrokeThickness="1.5" x:Name="serie" Stroke="Red" XValueBinding="XValue" YValueBinding="YValue"> </telerik:ScatterLineSeries> <telerik:AreaSeries StrokeThickness="2" Fill="Gray"> <telerik:AreaSeries.DataPoints> <telerik:CategoricalDataPoint Value="20"/> <telerik:CategoricalDataPoint Value="40"/> <telerik:CategoricalDataPoint Value="35"/> <telerik:CategoricalDataPoint Value="40"/> <telerik:CategoricalDataPoint Value="30"/> <telerik:CategoricalDataPoint Value="50"/> </telerik:AreaSeries.DataPoints> </telerik:AreaSeries> <telerik:RadCartesianChart.Behaviors> <telerik:ChartPanAndZoomBehavior ZoomMode="Both" PanMode="Both"/> </telerik:RadCartesianChart.Behaviors> <telerik:RadCartesianChart.Grid> <telerik:CartesianChartGrid Name="chartGrid" MajorLinesVisibility="XY" MajorXLineDashArray="5, 5" MajorYLineDashArray="5, 5"> <telerik:CartesianChartGrid.MajorXLineStyle> <Style TargetType="Line"> <Setter Property="Shape.Stroke" Value="Gray" /> </Style> </telerik:CartesianChartGrid.MajorXLineStyle> <telerik:CartesianChartGrid.MajorYLineStyle> <Style TargetType="Line"> <Setter Property="Shape.Stroke" Value="Gray" /> </Style> </telerik:CartesianChartGrid.MajorYLineStyle> </telerik:CartesianChartGrid> </telerik:RadCartesianChart.Grid> </telerik:RadCartesianChart>