This is a migrated thread and some comments may be shown as answers.

RadDiagram Toolbox doesn't open correctly after loading saved Diagram

1 Answer 163 Views
Diagram
This is a migrated thread and some comments may be shown as answers.
Steve
Top achievements
Rank 1
Steve asked on 02 Feb 2021, 06:20 PM
<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;
                                      }
                                  }
                              }
 
                          }
                      }
                  }
 
 
              }
          }
 
 
 
      }

1 Answer, 1 is accepted

Sort by
0
Steve
Top achievements
Rank 1
answered on 02 Feb 2021, 09:20 PM
This issue was resolved by removing the triggers for the SplitterPositon property. 
Tags
Diagram
Asked by
Steve
Top achievements
Rank 1
Answers by
Steve
Top achievements
Rank 1
Share this question
or