WPF:无法在我的viewmodel中的内部类上遇到断点

时间:2017-05-12 17:30:41

标签: c# wpf xaml mvvm visual-studio-2015

我目前正在开发一个需要拖放功能的项目。

我正在使用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的社区版

1 个答案:

答案 0 :(得分:0)

你不太可能有一个不能使用调试器的类。最好的办法是该方法并未真正被调用。快速拨打System.Diagnostics.Trace.WriteLine()甚至MessageBox.Show()可以毫不费力地回答这个问题。

然而。这真的是你的drop handler类的定义吗?

public class MainViewModel
{
    ...

    class ModuleItemsListDropHandler : IDropTarget
    {

如果是这样,那是一个私有类,所以我想知道你是如何将它的实例绑定到XAML中的任何东西。例如,您不能声明具有该返回类型的非私有属性。当然,可以将其作为IDropTargetObject返回。

顺便提一下,类(或直接在命名空间中定义的任何内容)通常默认为internal访问权限,而不是private,但子类(如类成员)默认为private