我有使用Thumb的矩形可以被拖动。可以通过单击并拖动矩形上的任何位置来拖动它们。
现在,我希望能够在父画布上添加一个居中用户所在的矩形。当我这样做时,我希望矩形能够接收到mousedown并且能够被拖动。
但是,在我鼠标向上并再次向下鼠标之前,矩形不会收到任何内容。
我尝试了previewMouseDown等,我尝试了e.Handled = true等,但它们都没有用。该事件始终由父画布使用。
是否有一种机制甚至可以像预览一样: 那么现在你设置为单击父画布,然后我添加矩形,哦,但现在你设置为单击矩形,所以最终我将mousedown给矩形。
答案 0 :(得分:1)
我还没有看到你的代码,因此我不能肯定地说它...假设你使用来自mvvmlight的交互式eventtrigger进行mousedown ..你可以做的是在矩形类中实现你的mousedown命令,然后你应该可以拖动你的矩形... 假设你的c#中有一个canvas类(canvas.cs),在canvas.cs中,你有一个对象调用Rect(Rectangle Rect = new Rectangle(...)),你可以在你的矩形中实现你的mousedown命令。 cs而不是canvas.cs。有很多方法可以做到这一点..或者在你的xwindl of mainwindow中...你可以做引用Rect类的绑定。例如,在你的mainwindow.xaml.cs中,你将datacontext设置为Canvas.cs ..在你的mainwindow.xaml中,你可以像这样绑定mousedown:
<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>