我目前正在开发一个需要拖放功能的项目。
我正在使用GongSolutions.DragDrop nuget包来简化我的解决方案。该库允许您将xaml上的“dd:DragDrop.DropHandler”属性绑定到实现IDropTarget接口的类。
在我的viewmodel中,我已经创建了一个内部类来实现它并且已经限制它,但是由于某种原因,我无法在这个内部类中遇到任何断点?当我让viewmodel本身继承它时,我能够击中所有断点,但我决定实现一个内置类,所以我可以在其中有多个drophandler。
以下是为了简单而删除了详细信息的代码,因为有很多代码,断点在MainViewModel中工作,但是当你在ModuleItemsListDropHandler中设置断点时,它根本不会命中断点
public class MainViewModel
{
ObservableCollection<ModuleItem> _moduleItems;
public ObservableCollection<ModuleItem> ModuleItems
{
get { return _moduleItems; }
}
ObservableCollection<ModuleItem> _moduleTiles;
public ObservableCollection<ModuleItem> ModuleTiles
{
get { return _moduleTiles; }
}
//breakpoints work within this method
public void addToList(MouseEventArgs e)
{
//removed for simplicity
}
public MainViewModel()
{
//removed for simplicity
}
//Class that will not let me hit breakpoints that are set
class ModuleItemsListDropHandler : IDropTarget
{
void IDropTarget.DragOver(IDropInfo dropInfo)
{
//functionality during drag over
}
void IDropTarget.Drop(IDropInfo dropInfo)
{
//functionality for drop
}
}
}
我目前正在使用VS 2015的社区版
答案 0 :(得分:0)
你不太可能有一个不能使用调试器的类。最好的办法是该方法并未真正被调用。快速拨打System.Diagnostics.Trace.WriteLine()
甚至MessageBox.Show()
可以毫不费力地回答这个问题。
然而。这真的是你的drop handler类的定义吗?
public class MainViewModel
{
...
class ModuleItemsListDropHandler : IDropTarget
{
如果是这样,那是一个私有类,所以我想知道你是如何将它的实例绑定到XAML中的任何东西。例如,您不能声明具有该返回类型的非私有属性。当然,可以将其作为IDropTarget
或Object
返回。
顺便提一下,类(或直接在命名空间中定义的任何内容)通常默认为internal
访问权限,而不是private
,但子类(如类成员)默认为private
。