<telerik:RadDocking Grid.Row="2" Grid.ColumnSpan="5" Grid.Column="0"> <telerik:RadDocking.DocumentHost > <telerik:RadSplitContainer > <telerik:RadPaneGroup > <telerik:RadDocumentPane Visibility="Collapsed" CanUserClose="False" telerik:RadDocking.FloatingSize="300 300" > <widgets:WidgetRadDiagram x:Name="xDiagram" ContextMenu="{x:Null}" telerik:DiagramSurface.IsVirtualizing="True" local:WidgetDragDropBehavior.IsEnabled="True" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto" ShapeSerialized="OnDiagramShapeSerialized" ShapeDeserialized="OnDiagramShapeDeserialized" SizeChanged="RadDiagram_SizeChanged" SelectionChanged="xDiagram_SelectionChanged" IsEditable="True" Background="{Binding SelectedColor, ElementName=BackgroundColorEditor, Converter={StaticResource customColorToBrushConverter}, Mode=TwoWay}" IsBackgroundSurfaceVisible="{Binding IsGridVisible, Mode=TwoWay}" IsSnapToGridEnabled="{Binding IsSnapEnabled, Mode=TwoWay}" primitives:BackgroundGrid.CellSize="{Binding CellSize, Mode=TwoWay}" primitives:BackgroundGrid.LineStroke="{Binding SelectedColor, ElementName=GridColorEditor, Converter={StaticResource customColorToBrushConverter}, Mode=TwoWay}" primitives:AlignmentAdorner.HorizontalLineStroke="Green" primitives:AlignmentAdorner.HorizontalLineStrokeDashArray="2 1" primitives:AlignmentAdorner.HorizontalLineStrokeThickness="2" primitives:AlignmentAdorner.VerticalLineStroke="Green" primitives:AlignmentAdorner.VerticalLineStrokeDashArray="1 2" primitives:AlignmentAdorner.VerticalLineStrokeThickness="2" SnapX="{Binding SnapX, Mode=TwoWay}" SnapY="{Binding SnapY, Mode=TwoWay}" SelectionMode="Multiple" RectSelectionMode="Full" AutoLayout="False" > <telerik:RadContextMenu.ContextMenu> <telerik:RadContextMenu x:Name="ContextMenuWidgetDiagram" ItemTemplate="{StaticResource MenuItemTemplate}" ItemClick="ContextMenuWidgetDiagram_OnItemClick" > </telerik:RadContextMenu> </telerik:RadContextMenu.ContextMenu> <primitives:ItemInformationAdorner.AdditionalContent > <telerik:SettingsPane Diagram="{Binding ElementName=xDiagram}" /> </primitives:ItemInformationAdorner.AdditionalContent> </widgets:WidgetRadDiagram> </telerik:RadDocumentPane> </telerik:RadPaneGroup> </telerik:RadSplitContainer> </telerik:RadDocking.DocumentHost> <telerik:RadSplitContainer InitialPosition="DockedLeft" MinWidth="350"> <telerik:RadPaneGroup > <!--Toolbox--> <telerik:RadPane Header="Toolbox" IsPinned="False" Visibility="{Binding WidgetToolboxVisibility}"> <telerik:RadDiagramToolbox x:Name="ToolBox" Title="Gallery" IsOpen="False" ItemsSource="{Binding Items}" ItemTemplate="{StaticResource ToolboxGroupTemplate}" Style="{StaticResource RadDiagramToolboxStyle1}" /> </telerik:RadPane> <telerik:RadPane x:Name="DiagramPropertiesPane" Header="DiagramProperties" IsPinned="False" > <!--IsPinned="True" Visibility="Visible">--> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid Grid.Row="0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <TextBlock Grid.Row="0" Grid.Column="0" Text="Background Color" FontSize="12" VerticalAlignment="Center" FontWeight="Bold" Margin="5"/> <telerik:RadColorPicker Grid.Row="0" Grid.Column="1" x:Name="BackgroundColorEditor" Margin="5" Width="50" HorizontalAlignment="Left" IsRecentColorsActive="True" AutomaticColor="Black" SelectedColorChanged="BackgroundColorEditor_SelectedColorChanged" /> <TextBlock Grid.Row="1" Grid.Column="0" Text="Text Color" FontSize="12" VerticalAlignment="Center" FontWeight="Bold" Margin="5"/> <telerik:RadColorPicker Grid.Row="1" Grid.Column="1" x:Name="ForegroundColorEditor" Margin="5" Width="50" HorizontalAlignment="Left" IsRecentColorsActive="True" SelectedColor="Yellow" AutomaticColor="Yellow" SelectedColorChanged="ForeGroundColorEditor_OnSelectedColorChanged"/> <TextBlock Grid.Row="2" Grid.Column="0" Text="Font" FontSize="12" VerticalAlignment="Center" FontWeight="Bold" Margin="5"/> <ComboBox x:Name="FontFamilyComboBox" Grid.Row="2" Grid.Column="1" Margin="5" ItemsSource="{Binding Source={StaticResource myFonts}}" FontSize="10" Height="23" SelectionChanged="FontFamilyComboBox_OnSelectionChanged" > <ComboBox.ItemsPanel> <ItemsPanelTemplate> <VirtualizingStackPanel /> </ItemsPanelTemplate> </ComboBox.ItemsPanel> <ComboBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding}" FontFamily="{Binding}" Height="20"/> </DataTemplate> </ComboBox.ItemTemplate> </ComboBox> <ComboBox x:Name="FontSizeComboBox" Grid.Row="2" Grid.Column="2" Width="50" Margin="5" SelectedValue="{Binding ElementName=xDiagram, Path=FontSize}" FontSize="10" SelectionChanged="FontSizeComboBox_OnSelectionChanged" /> <CheckBox x:Name="CheckBoxShowGrid" Grid.Row="3" Grid.Column="0" Content="Show Grid" VerticalAlignment="Center" FontSize="12" FontWeight="Bold" IsChecked="{Binding IsGridVisible, Mode=TwoWay}" Margin="5"/> <TextBlock Grid.Row="4" Grid.Column="0" Text="Grid Color" FontSize="12" FontWeight="Bold" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="5" Visibility="{Binding ElementName=CheckBoxShowGrid, Path=IsChecked, Converter={StaticResource boolVisibilityConverter}}" /> <telerik:RadColorPicker Grid.Row="4" Grid.Column="1" x:Name="GridColorEditor" Margin="5" Width="50" SelectedColor="Gray" AutomaticColor="Gray" Visibility="{Binding ElementName=CheckBoxShowGrid, Path=IsChecked, Converter={StaticResource boolVisibilityConverter}}"/> <TextBlock Grid.Row="5" Grid.Column="0" Text="Cell Size" FontSize="12" FontWeight="Bold" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="5" Visibility="{Binding ElementName=CheckBoxShowGrid, Path=IsChecked, Converter={StaticResource boolVisibilityConverter}}"/> <TextBox Grid.Row="5" Grid.Column="1" VerticalAlignment="Center" VerticalContentAlignment="Center" Margin="5" Text="{Binding CellSize, Mode=TwoWay}" Visibility="{Binding ElementName=CheckBoxShowGrid, Path=IsChecked, Converter={StaticResource boolVisibilityConverter}}"/> </Grid> </Grid> </telerik:RadPane> </telerik:RadPaneGroup> </telerik:RadSplitContainer> <telerik:GridViewCell Content="GridViewCell" Height="100" Width="100" /> </telerik:RadDocking>My RadDigaram Toolbox is contained in a RadSplitContainer with the InitialPosition="DockedLeft". When the diagram is displayed initially, the RadDiagramToolbox does a flyout correctly, fully displaying all widgets in the toolbox. After saving and reopening the diagram the toolbox will will only flyout partially. If the user pins the tool box, it will expand to the correct size, once unpinned it reverts back to a small size. Unfortunately I am unable to take screenshots due to the flyout closing once the mouse is moved off the flyout. The RadDigram is in the WidgetDiagram class which saved and loaded via the code below.
public void SaveRadDocking(RadDocking radDocking) { try { System.Windows.Forms.FolderBrowserDialog folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog(); folderBrowserDialog.RootFolder = Environment.SpecialFolder.Desktop; folderBrowserDialog.SelectedPath = SaveFolder; System.Windows.Forms.DialogResult result = folderBrowserDialog.ShowDialog(); if (result == System.Windows.Forms.DialogResult.OK) { SaveFolder = folderBrowserDialog.SelectedPath; Configuration.Instance.SetDisplayPath(SaveFolder); StringBuilder paneSizeStringBuilder = new StringBuilder(); if (Panes.Count > 0) { foreach (var pane in Panes) { paneSizeStringBuilder.AppendFormat("{0}:{1},", pane.ActualHeight, pane.ActualWidth); } Configuration.Instance.SetDisplaySizes(paneSizeStringBuilder.ToString().Remove(paneSizeStringBuilder.Length - 1, 1)); } using (FileStream fileStream = File.Create(SaveFolder + dockingLayoutFileName)) { fileStream.Seek(0, SeekOrigin.Begin); radDocking.SaveLayout(fileStream); } } } catch (Exception ex) { string message = string.Format("{0}/n{1}", ex.Message, ex.StackTrace); MessageBox.Show(message, "Save Display Error", MessageBoxButton.OK, MessageBoxImage.Error); } }public void LoadRadDocking(RadDocking radDocking) { System.Windows.Forms.FolderBrowserDialog folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog(); folderBrowserDialog.RootFolder = Environment.SpecialFolder.Desktop; folderBrowserDialog.SelectedPath = SaveFolder; System.Windows.Forms.DialogResult result = folderBrowserDialog.ShowDialog(); if (result == System.Windows.Forms.DialogResult.OK) { SaveFolder = folderBrowserDialog.SelectedPath; Manager.Instance.CurrentDataRequestor.Pause = true; if (Panes.Count > 0) { for (int index = 0; index <= Panes.Count; index++) { RadPane radPane = Panes[0]; RemovePane(radPane, false); } } Manager.ServerCommunicator.WindowIsBusy = true; LoadDisplays(radDocking, SaveFolder); Manager.Instance.CurrentDataRequestor.Pause = false; } } public void LoadDisplays(RadDocking radDocking, string displaysFolderPath) { Manager.Instance.CurrentDataRequestor.Pause = true; Manager.Instance.WidgetLoading = true; if (File.Exists(displaysFolderPath + dockingLayoutFileName)) { SaveFolder = displaysFolderPath; layout = File.ReadAllText(displaysFolderPath + dockingLayoutFileName); if (!string.IsNullOrWhiteSpace(layout)) { using (Stream stream = new MemoryStream(Encoding.UTF8.GetBytes(layout))) { stream.Seek(0, SeekOrigin.Begin); radDocking.LoadLayout(stream); } } } foreach (ISubscriber widget in Manager.Subscribers) { if (widget.WidgetType != WidgetTypes.Text && string.IsNullOrEmpty(widget.TextWidgetName)) { //if it is a text widget loop through all subscribers looking at // non text widgets for a matching name. If a widget with Matching //Title is found assign the textwidgets name to the non text widget if (widget.Name != null) { if (!Manager.WidgetTextWidgetNames.ContainsKey(widget.Name)) { foreach (ISubscriber subscriber in Manager.Subscribers) { if (subscriber.WidgetType == WidgetTypes.Text) { if (widget.Title == subscriber.Title) { if (!Manager.WidgetTextWidgetNames.ContainsValue(subscriber.Name)) { widget.TextWidgetName = subscriber.Name; Manager.WidgetTextWidgetNames.Add(widget.Name, subscriber.Name); break; } } } } } } } } }