我有使用拇指的矩形,可以被拖动。可以通过单击并拖动矩形上的任意位置来拖动它们。
现在,我希望能够在用户在父画布上向下移动鼠标的位置添加一个矩形。当我这样做的时候,我希望矩形能够接收鼠标向下并且能够被拖动。
但是,在我打开鼠标并再次按下鼠标之前,矩形什么也不会收到。
我尝试了previewMouseDown等,我尝试了e.Handled = true等,但它们都不起作用。该事件始终由父画布使用。
在预览上面有没有这样的机制:好的,现在你被设置为点击父画布,然后我添加矩形,哦,但是现在你被设置为点击矩形,所以最终我会让鼠标向下移动到矩形。
发布于 2017-02-23 02:38:24
我还没有看过你的代码,所以我不能肯定地说。假设您使用mvvmlight中的交互性eventtrigger来进行mousedown。你能做的就是在rectangle类中实现mousedown命令,然后你就可以拖动你的矩形了。假设你的c#中有一个画布类( canvas.cs ),在你的canvas.cs中,你有一个名为Rect (矩形矩形=新矩形(...))的对象,你可以在你的rectangle.cs中实现鼠标按下命令,而不是canvas.cs。有很多方法可以做到这一点..或者在主窗口的xaml中。您可以进行引用Rect类的绑定。例如,在mainwindow.xaml.cs中,将数据上下文设置为Canvas.cs。在你的mainwindow.xaml中,你可以像这样绑定鼠标按下:
<Window
xmlns:i="clr namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WPF45">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDown or PreviewMouseDown">
<cmd:EventToCommand Command="{Binding Canvas.Rect.MouseDownCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Window>或者,您也可以这样做
<Your Control Here>
<Border>
<Border.InputBinding>
<MouseBinding MouseAction="LeftClick" Command="{Binding DataContext.SomeCommand}"/>
</Border.InputBindings>
</Border>
</Your Control Here>https://stackoverflow.com/questions/42396824
复制相似问题