<
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;
}
}
}
}
}
}
}
}
}