我正在尝试在ItemsControl(带有用于面板的网格)周围拖放一些形状。通过像这样在ItemsControl上使用Message.Attach,并根据需要传递$ eventArgs或$ executionContext,可以使它以基本方式工作。 将它们存储在viewmodel中。 (不存储鼠标的实际位置,而是一个Point(行,列))
我想对各种行动有某种条件,即 除非按住鼠标按钮等,否则不要执行MouseMove。
我还希望对可以放置项目的位置有各种限制,例如,单元格为空,不会与其他任何东西重叠等等。
我的第一个想法是自定义SpecialValue $ startDrag,因此我可以测试按钮是否被按住,然后直接传递计算出的网格位置,而不是 原始的MouseEventArgs。更好一点,因为我只需要2条消息(MouseMove + MouseLeftButtonUP),但仍然不理想。
必须有一种更合适的方法来执行这样的操作。 我正在查看CM的协程,异步内容以及诸如反应性之类的东西,但我几乎对它们一无所知,或者根本不了解它们。
欢迎任何想法或建议。