From 61d0445703c7425be33a7b6dc2cb6c7256d93989 Mon Sep 17 00:00:00 2001 From: Sreemon Premkumar M Date: Tue, 26 Aug 2025 13:01:40 +0530 Subject: [PATCH] ES-975464 - Resolve the ReadMe issue in this sample repository --- README.md | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 80 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2fd8811..fe0c880 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,80 @@ -# How to drag and drop between two winui treeview? -This example describes how to drag and drop between two winui treeview. +# How to drag and drop between two WinUI TreeView + +This example describes how to drag and drop between two [WinUI TreeView](https://www.syncfusion.com/winui-controls/treeview) (SfTreeView). + +You can customize the dragging operation between two treeview by using the [SfTreeView.ItemDragStarting](https://help.syncfusion.com/cr/winui/Syncfusion.UI.Xaml.TreeView.SfTreeView.html#Syncfusion_UI_Xaml_TreeView_SfTreeView_ItemDragStarting), [SfTreeView.ItemDropping](https://help.syncfusion.com/cr/winui/Syncfusion.UI.Xaml.TreeView.SfTreeView.html#Syncfusion_UI_Xaml_TreeView_SfTreeView_ItemDropping) and [SfTreeView.ItemDropped](https://help.syncfusion.com/cr/winui/Syncfusion.UI.Xaml.TreeView.SfTreeView.html#Syncfusion_UI_Xaml_TreeView_SfTreeView_ItemDropped) events. + +``` csharp +AssociatedObject.sfTreeView1.ItemDragStarting += SfTreeView1_ItemDragStarting; +AssociatedObject.sfTreeView1.ItemDropping += SfTreeView1_ItemDropping; +AssociatedObject.sfTreeView2.ItemDropping += SfTreeView2_ItemDropping; +AssociatedObject.sfTreeView2.ItemDropped += SfTreeView1_ItemDropped; + +/// +/// Customizing the ItemStarting event +/// +/// +/// +private void SfTreeView1_ItemDragStarting(object sender, Syncfusion.UI.Xaml.TreeView.TreeViewItemDragStartingEventArgs e) +{ + //Restrict the dragging for certain node + var record = e.DraggingNodes[0].Content as Model; + if (record.Header == "Feature Schedule") + e.Cancel = true; +} + +/// +/// Customizing the ItemDropping event +/// +/// +/// +private void SfTreeView1_ItemDropping(object sender, Syncfusion.UI.Xaml.TreeView.TreeViewItemDroppingEventArgs e) +{ + //Restrict the dropping in first treeview + e.Handled = true; +} + +/// +/// Customizing the ItemDropping event +/// +/// +/// +private void SfTreeView2_ItemDropping(object sender, Syncfusion.UI.Xaml.TreeView.TreeViewItemDroppingEventArgs e) +{ + //Restrict the dropping for drop position as above + if (e.DropPosition == Syncfusion.UI.Xaml.TreeView.DropPosition.DropAbove) + e.Handled = true; + + //Restrict the dropping on certain nodes + var record = e.TargetNode.Content as Model; + if (record.Header == "My Folders") + e.Handled = true; +} + +/// +/// Customize the ItemDropped event +/// +/// +/// +private void SfTreeView1_ItemDropped(object sender, Syncfusion.UI.Xaml.TreeView.TreeViewItemDroppedEventArgs e) +{ + var parentNode = e.TargetNode.ParentNode; + var collection = parentNode.ChildNodes; + var record = e.DraggingNodes[0].Content as Model; + int count = 0; + foreach (var child in parentNode.ChildNodes) + { + var childNode = child.Content as Model; + if (childNode.Header == record.Header) + { + count++; + if (count > 1) + { + // Remove dropped node if the parent has the same node in it + collection.Remove(child); + return; + } + } + } +} +``` \ No newline at end of file