This is a regressiion issue in the 2024.3.924 release of Telerik UI for WPF.
Save and load of the saved XML should result of the same item IDs for every RadDiagramItem (shapes, connections).
To work this around, you can create a custom SerializationService and override its DeserializeItems method, where you can change the "makeUnique" parameter.
The issue manifests also when doing drag/drop from the RadDiagramToolBox or any other custom drag drop implementation that uses the DiagramDropInfo class (which is automatically handled by the RadDiagram's drop internal code). In this case the custom service approach won't work because the drag/drop deserialization works with a separate instance of SerializationService (SerializationService.Default) which cannot be changed. In this case, you can subscribe RadDiagram to the DragDropManaged.Drop event and manually call the SerializationService.Default.DeserializeItems method.
public class CustomSerializationService : SerializationService
{
public CustomSerializationService(IGraphInternal graph) : base(graph)
{
}
public override IEnumerable<IDiagramItem> DeserializeItems(SerializationInfo serializationInfo, bool makeUnique = false)
{
makeUnique = false;
return base.DeserializeItems(serializationInfo, makeUnique);
}
}
public MainWindow()
{
InitializeComponent();
this.diagram.ServiceLocator.Register<ISerializationService>(new CustomSerializationService(this.diagram));
DragDropManager.AddDropHandler(this.diagram, OnDiagramDrop);
}
private void OnDiagramDrop(object sender, Telerik.Windows.DragDrop.DragEventArgs e)
{
var data = DragDropPayloadManager.GetDataFromObject(e.Data, typeof(DiagramDropInfo).Name);
if (data is DiagramDropInfo)
{
SerializationService.Default.DeserializeItems(((DiagramDropInfo)data).Info, false);
}
}
Hi, we use the map control in our application.
We get random KeyNotFoundException in TilesDownloadManager when zooming in...
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. in System.Collections.Concurrent.ConcurrentDictionary`2.get_Item(TKey key) in Telerik.Windows.Controls.Map.TilesDownloadManager.UpdateTileCache() in Telerik.Windows.Controls.Map.TilesDownloadManager.Process() in Telerik.Windows.Controls.Map.TilesDownloadManager.DownloaderThread() in System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) in System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) in System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) in System.Threading.ThreadHelper.ThreadStart()
System.Collections.Generic.KeyNotFoundException in System.Collections.Concurrent.ConcurrentDictionary`2[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].get_Item(System.__Canon) in Telerik.Windows.Controls.Map.TilesDownloadManager.RemoveTile(Telerik.Windows.Controls.Map.TileId) in Telerik.Windows.Controls.Map.TilesDownloadManager.RemoveL1Cache() in System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) in System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) in System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) in System.Threading.ThreadHelper.ThreadStart()
We use OpenStreetMapProvider and don't use tile caching.
ArgumentNullException can be thrown when opening a RadOpenFileDialog in the following scenario: CustomPlaces contains the Desktop directory, InitialDirectory is also set to Desktop and ShowNetworkLocations is false.
System.Windows.Data Error: 8 : Cannot save value from target back to source. BindingExpression:Path=CurrentParentDirectory; DataItem='OpenFileDialogViewModel' (HashCode=57416810); target element is 'FileDialogsBreadcrumb' (Name='PART_PathNavigationPane'); target property is 'CurrentItem' (type 'Object') ArgumentNullException:'System.ArgumentNullException: Value cannot be null.
Parameter name: value
at System.String.StartsWith(String value)
at Telerik.Windows.Controls.FileDialogs.Helpers.PathHelper.CapitalizeNetworkPath(String path)
at Telerik.Windows.Controls.FileDialogs.ExplorerControl.BringItemIntoView(DirectoryBaseWrapper itemToBring)
at Telerik.Windows.Controls.FileDialogs.ExplorerControl.SyncTreeViewWithCurrentDir()
at Telerik.Windows.Controls.FileDialogs.ExplorerControl.ProcessCurrentParentDirChanged()
at System.ComponentModel.PropertyChangedEventHandler.Invoke(Object sender, PropertyChangedEventArgs e)
at Telerik.Windows.Controls.ViewModelBase.OnPropertyChanged(String propertyName)
at Telerik.Windows.Controls.FileDialogs.OpenFileDialogViewModel.OnPropertyChanged(String propertyName)
at Telerik.Windows.Controls.FileDialogs.DialogViewModel.set_CurrentParentDirectory(DirectoryBaseWrapper value)'
The performance of loading the thumbnails is decreased with the removing of the cache in PdfViewer. Possible reason is that the pages are no longer loaded asynchronously. Steps to reproduce: - Open the SDK with the thumbnails for PDFViewer. - Notice that the load of the thumbnails is slow.