I am using new DragDropManager  and all works fine less then for a little problem that with previous version (RadDragDropManager) was working correctly :
Like attached picture , i have one user control composed by one Grid with one Image and one TextBox ; the usercontrol is marked with :
 
 
 
 
 
 
AllowDrop is placed on the Grid , but placing on the entire Usercontrol doesn't change the problem.
When i drop with this code :
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
The drop is allowed only on the Image of the control and not on the whoole usercontrol loke with previous version ....
I have try too setting AllowDrop on only one RadNumericUpDown and in this case the drop is allowed ONLY if i am with cursor over the up/down buttons
I have added two images to explain the problem.
Can you help me , because for my company is important to solve this problem.
Best regards
Claudio Rossi
                                Like attached picture , i have one user control composed by one Grid with one Image and one TextBox ; the usercontrol is marked with :
<UserControl x:Class="LibreriaWpfCoster.EditorSingolaVariabileInt32"             xmlns:globalization="clr-namespace:System.Globalization;assembly=mscorlib"             xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"                            MinWidth="40"             MinHeight="20"                           mc:Ignorable="d"             d:DesignWidth="40"             d:DesignHeight="71"             Loaded="UserControl_Loaded"             >         <Grid x:Name="LayoutRoot"          Background="LightGreen"          AllowDrop="True"          >        <Grid.ColumnDefinitions>            <ColumnDefinition Width="20"/>            <ColumnDefinition Width="*"/>        </Grid.ColumnDefinitions>        <!--Icona che cambia in funzione del tipo rilevato e cliccandoci sopra resetta la variabile-->        <Image x:Name="imgObj"               Source="Images/Numero32Negativo.png"               Stretch="Uniform"               MouseLeftButtonDown="imgObj_MouseLeftButtonDown"               />        <!--Oggetto per editare il nome della variabile-->        <TextBox x:Name="varObj"                  Grid.Column="1"                 Panel.ZIndex="0"                 Text="{Binding Path=PlcVar, Mode=TwoWay}"                 PreviewKeyDown="varObj_PreviewKeyDown"                 ContextMenu="{x:Null}"                 />        <!--Oggetto per editare il nome della SysVar-->        <TextBox x:Name="varSysObj"                  Grid.Column="1"                 Panel.ZIndex="0"                 Text="{Binding Path=SysVarName, Mode=TwoWay}"                 PreviewKeyDown="varObj_PreviewKeyDown"                 ContextMenu="{x:Null}"                 />    </Grid></UserControl>AllowDrop is placed on the Grid , but placing on the entire Usercontrol doesn't change the problem.
When i drop with this code :
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;using ClassiCoster;using System.ComponentModel;using Telerik.Windows.DragDrop;using Telerik.Windows;namespace LibreriaWpfCoster{    /// <summary>    /// Interaction logic for EditorSingolaVariabileInt16.xaml    /// </summary>    public partial class EditorSingolaVariabileInt32 : UserControl    {        public EditorSingolaVariabileInt32()        {            InitializeComponent();            DragDropManager.AddDropHandler(this, OnVarDrop);            DragDropManager.AddDragOverHandler(this, OnVarDragOver);            DragDropManager.AddDragLeaveHandler(this, OnVarDragLeave);        }                 /// <summary>        /// Variabile PLC        /// </summary>        public SingolaVariabileInt32 Variabile        {            get { return (SingolaVariabileInt32)GetValue(VariabileProperty); }            set { SetValue(VariabileProperty, value); }        }        public static readonly DependencyProperty VariabileProperty = DependencyProperty.Register("Variabile",                                                                                                  typeof(SingolaVariabileInt32),                                                                                                  typeof(EditorSingolaVariabileInt32),                                                                                                  new PropertyMetadata(new SingolaVariabileInt32(), OnVariabilePropertyChanged));        private static void OnVariabilePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)        {            (d as EditorSingolaVariabileInt32).LayoutRoot.DataContext = ((EditorSingolaVariabileInt32)d).Variabile;            (d as EditorSingolaVariabileInt32).MettiInPrimoPianoIlControlloCorretto();        }        private static List<PlcVariableType> _allowedVars = new List<PlcVariableType>(new PlcVariableType[]         {             PlcVariableType.INT8,            PlcVariableType.UINT8,            PlcVariableType.INT16,            PlcVariableType.UINT16,            PlcVariableType.INT32,            PlcVariableType.UINT32,        });        /// <summary>        /// Specifica i tipi di variabili ammessi per venir messe in binding        /// </summary>        public List<PlcVariableType> AllowedVars        {            get { return _allowedVars; }            set { _allowedVars = value; }        }        private static List<PlcVariableType> _allowedIndexVars = new List<PlcVariableType>(new PlcVariableType[]        {              PlcVariableType.INT8,             PlcVariableType.UINT8,             PlcVariableType.INT16,             PlcVariableType.UINT16,             PlcVariableType.INT32,             PlcVariableType.UINT32,        });        /// <summary>        /// Specifica i tipi di variabili che possono venir messe in binding per gli indici        /// </summary>        public List<PlcVariableType> AllowedIndexVars        {            get { return _allowedIndexVars; }            set { _allowedIndexVars = value; }        }        /// <summary>        /// Fa l'effetto per draggare una variabile         /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void OnVarDragOver(object sender, Telerik.Windows.DragDrop.DragEventArgs e)        {            Boolean Evidenzia = false;            if (e.Data is DataObject)            {                VariabilePlc vPlc = (e.Data as DataObject).GetData(typeof(VariabilePlc)) as VariabilePlc;                if (vPlc != null)                {                    if (vPlc.SysVarID > 0) ProvaASelezionareUnIndice();                    Evidenzia = GenericiEditorVariabili.DimmiSeAppartieneAllaLista(_allowedVars, vPlc.Tipo);                    if (!Evidenzia && vPlc.SysVarID < 1 && GenericiEditorVariabili.DimmiSeHoSelezionatoUnIndice(varObj))                    {                        Evidenzia = GenericiEditorVariabili.DimmiSeAppartieneAllaLista(_allowedIndexVars, vPlc.Tipo);                    }                }            }            e.Effects = Evidenzia ? DragDropEffects.Copy : DragDropEffects.None;            GenericiEditorVariabili.EvidenziaPerDrag(LayoutRoot, Evidenzia);            e.Handled = true;        }        private void OnVarDragLeave(object sender, Telerik.Windows.DragDrop.DragEventArgs e)        {            e.Effects = DragDropEffects.None;            GenericiEditorVariabili.EvidenziaPerDrag(LayoutRoot, false);            e.Handled = true;        }        /// <summary>        /// Viene eseguito al drop di una variabile         /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void OnVarDrop(object sender, Telerik.Windows.DragDrop.DragEventArgs e)        {            GenericiEditorVariabili.EvidenziaPerDrag(LayoutRoot, false);            if (e.Data == null || !(e.Data is DataObject)) return;            VariabilePlc vPlc = (e.Data as DataObject).GetData(typeof(VariabilePlc)) as VariabilePlc;            if (vPlc != null)            {                ProvaASelezionareUnIndice();                if (vPlc.SysVarID < 1 && GenericiEditorVariabili.DimmiSeHoSelezionatoUnIndice(varObj))                {                    if (GenericiEditorVariabili.DimmiSeAppartieneAllaLista(_allowedIndexVars, vPlc.Tipo))                    {                        String strPrima = varObj.Text.Substring(0, varObj.SelectionStart);                        String strDopo = varObj.Text.Substring(varObj.SelectionStart + varObj.SelectionLength);                        Variabile.PlcVar = strPrima + vPlc.PlcVar + strDopo;                    }                    else                    {                        if (GenericiEditorVariabili.DimmiSeAppartieneAllaLista(_allowedVars, vPlc.Tipo))                        {                            Variabile.ResetVar();                            Variabile.PlcVar = vPlc.PlcVar;                        }                    }                }                else                {                    if (GenericiEditorVariabili.DimmiSeAppartieneAllaLista(_allowedVars, vPlc.Tipo))                    {                        Variabile.ResetVar();                        if (vPlc.SysVarID > 0)                        {                            Variabile.SysVarName = vPlc.PlcVar;                            Variabile.SysVarID = vPlc.SysVarID;                        }                        else                        {                            Variabile.PlcVar = vPlc.PlcVar;                        }                    }                }                MettiInPrimoPianoIlControlloCorretto();                e.Handled = true;            }        }        //private void OnDropQuery(object sender, DragDropQueryEventArgs e)        //{        //    switch (e.Options.Status)        //    {        //        case DragStatus.DropDestinationQuery:        //            if (e.Options.Payload is VariabilePlc)        //            {        //                VariabilePlc vPlc = e.Options.Payload as VariabilePlc;        //                if (GenericiEditorVariabili.DimmiSeAppartieneAllaLista(_allowedVars, vPlc.Tipo) ||        //                    (vPlc.SysVarID < 1 && GenericiEditorVariabili.DimmiSeAppartieneAllaLista(_allowedIndexVars, vPlc.Tipo))        //                   )        //                {        //                    e.QueryResult = true;        //                    e.Handled = true;        //                }        //            }        //            break;        //    }        //}        //private void OnDropInfo(object sender, DragDropEventArgs e)        //{        //    LibreriaWpfCoster.CustomDragCue cueObj = e.Options.DragCue as LibreriaWpfCoster.CustomDragCue;        //    if (e.Options.Status == DragStatus.DropPossible) GenericiEditorVariabili.EvidenziaPerDrag(LayoutRoot,cueObj , true);        //    if (e.Options.Status == DragStatus.DropImpossible) GenericiEditorVariabili.EvidenziaPerDrag(LayoutRoot,cueObj , false);        //    if (e.Options.Status != DragStatus.DropComplete) return;        //    GenericiEditorVariabili.EvidenziaPerDrag(LayoutRoot,cueObj, false);        //    VariabilePlc vPlc = e.Options.Payload as VariabilePlc;        //    if (e.Options.Status == DragStatus.DropComplete && vPlc != null)        //    {        //        ProvaASelezionareUnIndice();        //        if (vPlc.SysVarID < 1 && GenericiEditorVariabili.DimmiSeHoSelezionatoUnIndice(varObj))        //        {        //            if (GenericiEditorVariabili.DimmiSeAppartieneAllaLista(_allowedIndexVars, vPlc.Tipo))        //            {        //                String strPrima = varObj.Text.Substring(0, varObj.SelectionStart);        //                String strDopo = varObj.Text.Substring(varObj.SelectionStart + varObj.SelectionLength);        //                Variabile.PlcVar = strPrima + vPlc.PlcVar + strDopo;        //            }        //            else        //            {        //                if (GenericiEditorVariabili.DimmiSeAppartieneAllaLista(_allowedVars, vPlc.Tipo))        //                {        //                    Variabile.ResetVar();        //                    Variabile.PlcVar = vPlc.PlcVar;        //                }        //            }        //        }        //        else        //        {        //            if (GenericiEditorVariabili.DimmiSeAppartieneAllaLista(_allowedVars, vPlc.Tipo))        //            {        //                Variabile.ResetVar();        //                if (vPlc.SysVarID > 0)        //                {        //                    Variabile.SysVarName = vPlc.PlcVar;        //                    Variabile.SysVarID = vPlc.SysVarID;        //                }        //                else        //                {        //                    Variabile.PlcVar = vPlc.PlcVar;        //                }        //            }        //        }        //        MettiInPrimoPianoIlControlloCorretto();        //        e.Handled = true;        //    }        //}        /// <summary>        /// Partendo dalla posizione del cursore prova a vedere se nell'intorno c'è un array        /// </summary>        private void ProvaASelezionareUnIndice()        {            int PosParentesiSinistra, PosParentesiDestra;            if (varObj.Text.Length < 4 || varObj.SelectionStart < 1) return;            if (varObj.SelectionStart >= varObj.Text.Length) return;            if (",".IndexOf(varObj.Text.Substring(varObj.SelectionStart, 1)) != -1) varObj.SelectionStart++;            for (PosParentesiSinistra = varObj.SelectionStart; PosParentesiSinistra > 1; PosParentesiSinistra--)            {                if ("[,".IndexOf(varObj.Text.Substring(PosParentesiSinistra, 1)) != -1)                {                    break;                }            }            for (PosParentesiDestra = varObj.SelectionStart; PosParentesiDestra < varObj.Text.Length; PosParentesiDestra++)            {                if (",]".IndexOf(varObj.Text.Substring(PosParentesiDestra, 1)) != -1)                {                    break;                }            }            if (PosParentesiSinistra > 0 && (PosParentesiDestra < varObj.Text.Length))            {                varObj.SelectionStart = PosParentesiSinistra + 1;                varObj.SelectionLength = PosParentesiDestra - PosParentesiSinistra - 1;            }        }        private void UserControl_Loaded(object sender, RoutedEventArgs e)        {            LayoutRoot.DataContext = Variabile;            MettiInPrimoPianoIlControlloCorretto();            varObj.ContextMenu = null;        }        private void MettiInPrimoPianoIlControlloCorretto()        {            Int32 varObjZ = 0;            Int32 varSysObjZ = 0;            if (Variabile.SysVarID > 0)            {                varSysObjZ = 1;            }            else            {                varObjZ = 1;            }            varObj.SetValue(Panel.ZIndexProperty, varObjZ);            varSysObj.SetValue(Panel.ZIndexProperty, varSysObjZ);        }        /// <summary>        /// Ho gestito quest'evento per aggiornare in caso di testo vuoto        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void varObj_PreviewKeyDown(object sender, KeyEventArgs e)        {            switch (e.Key)            {                case Key.Enter:                case Key.Back:                case Key.Delete:                    Variabile.ResetVar();                    MettiInPrimoPianoIlControlloCorretto();                    break;                default:                    break;            }            e.Handled = true;        }        /// <summary>        /// Serve per cancellare la variabile plc se gli si clicca sopra        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void imgObj_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)        {            Variabile.ResetVar();            MettiInPrimoPianoIlControlloCorretto();            e.Handled = true;        }    }}The drop is allowed only on the Image of the control and not on the whoole usercontrol loke with previous version ....
I have try too setting AllowDrop on only one RadNumericUpDown and in this case the drop is allowed ONLY if i am with cursor over the up/down buttons
I have added two images to explain the problem.
Can you help me , because for my company is important to solve this problem.
Best regards
Claudio Rossi