How to reproduce: see the attached video
Workaround:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
this.radPivotFieldList1.DragDropService = new CustomPivotFieldListDragDropService(this.radPivotFieldList1);
}
private void Form2_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'nwindDataSet.Orders' table. You can move, or remove it, as needed.
this.ordersTableAdapter.Fill(this.nwindDataSet.Orders);
}
}
public class CustomPivotFieldListDragDropService : PivotFieldListDragDropService
{
private RadPivotFieldList fieldList;
private Telerik.WinControls.UI.PivotFieldList.FieldPayload payload;
public CustomPivotFieldListDragDropService(RadPivotFieldList fieldList)
: base(fieldList)
{
this.fieldList = fieldList;
}
protected override void PerformStart()
{
base.PerformStart();
Telerik.WinControls.UI.PivotFieldList.IField draggedField = this.GetField(this.Context);
if (draggedField == null)
{
this.Stop(false);
return;
}
this.payload = new Telerik.WinControls.UI.PivotFieldList.FieldPayload(draggedField);
}
protected override void OnPreviewDragOver(RadDragOverEventArgs e)
{
RadElement targetElement = this.DropTarget as RadElement;
Telerik.WinControls.UI.PivotFieldList.IField targetField = this.GetField(targetElement);
if (targetElement != null && targetElement.ElementTree.Control == this.fieldList.ReportFiltersControl && this.payload != null)
{
foreach (Telerik.WinControls.UI.PivotFieldList.IField field in this.fieldList.ViewModel.Filters)
{
if (field.FieldInfo == payload.DraggedField.FieldInfo && this.Context is TreeNodeElement ))
{
e.CanDrop = false;
this.payload.SetDestination(null);
this.payload.RemoveFromSource = false;
return;
}
}
}
base.OnPreviewDragOver(e);
}
private Telerik.WinControls.UI.PivotFieldList.IField GetField(object context)
{
RadListVisualItem listItem = context as RadListVisualItem;
TreeNodeElement treeItem = context as TreeNodeElement;
PivotFieldListItemButton button = context as PivotFieldListItemButton;
if (button != null)
{
listItem = button.Owner;
}
Telerik.WinControls.UI.PivotFieldList.IField field1 = null, field2 = null;
if (listItem != null && listItem.Data != null)
{
field1 = listItem.Data.DataBoundItem as Telerik.WinControls.UI.PivotFieldList.IField;
}
if (treeItem != null && treeItem.Data != null)
{
field2 = treeItem.Data.DataBoundItem as Telerik.WinControls.UI.PivotFieldList.IField;
}
return field1 ?? field2;
}
}