private void UpdatePropertiesPane() { if (DocumentPanes.Any() == false) { ClearCustomPropertiesPane(); return; } var documentPane = DocumentPanes[SelectedDocumentPaneIndex]; if (_customDocumentPaneProperties.ContainsKey(documentPane) == false || _customDocumentPaneProperties[documentPane] == null) { CustomPropertyPane.Content = null; PropertyPanes.Remove(CustomPropertyPane); return; } CustomPropertyPane.Content = _customDocumentPaneProperties[documentPane]; if (PropertyPanes.Contains(CustomPropertyPane) == false) { PropertyPanes.Add(CustomPropertyPane); } FocusPropertyPane(CustomPropertyPane); }
private void DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) { if (e.Exception.GetType() != typeof(InvalidOperationException)) { return; } var exception = e.Exception as InvalidOperationException; if (exception.Message != "Operation is not valid while ItemsSource is in use. Access and modify elements with ItemsControl.ItemsSource instead." || exception.Source != "PresentationFramework") { return; } //Most probably user attempted to close active DocumentPane, so let's do it for him var pane = DocumentPanes[SelectedDocumentPaneIndex]; DocumentPanes.Remove(pane); if (_customDocumentPanes.Values.Contains(pane)) { var customPaneKey = _customDocumentPanes.First(x => x.Value == pane).Key; _customDocumentPanes.Remove(customPaneKey); _customDocumentPaneProperties.Remove(pane); } e.Handled = true; }
public void Handle(ShowDocumentPaneMessage message) { var paneKey = string.Format("{0}_{1}_{2}", message.Sender.GetType().AssemblyQualifiedName, message.Sender.GetType().FullName, message.Title); if (_customDocumentPanes.ContainsKey(paneKey) == false || _customDocumentPanes[paneKey] == null) { var newPane = new RadPane(); newPane.CanDockInDocumentHost = true; _customDocumentPanes[paneKey] = newPane; } var pane = _customDocumentPanes[paneKey]; pane.Content = message.PaneContent; pane.Header = message.Title; if (message.PaneProperties != null) { _customDocumentPaneProperties[pane] = message.PaneProperties; } if (DocumentPanes.Contains(pane) == false) { DocumentPanes.Add(pane); } FocusDocumentPane(pane); }
private void RemoveDocumentPaneByKey(string paneKey) { if (_customDocumentPanes.ContainsKey(paneKey) == false) { return; } var pane = _customDocumentPanes[paneKey]; _customDocumentPaneProperties.Remove(pane); DocumentPanes.Remove(pane); _customDocumentPanes.Remove(paneKey); }
private void FocusDocumentPane(RadPane pane) { SelectedDocumentPaneIndex = DocumentPanes.IndexOf(pane); }