首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mousedown上添加控件并让新控件获取mousedown

在mousedown上添加控件并让新控件获取mousedown
EN

Stack Overflow用户
提问于 2017-02-23 00:17:27
回答 1查看 137关注 0票数 0

我有使用拇指的矩形,可以被拖动。可以通过单击并拖动矩形上的任意位置来拖动它们。

现在,我希望能够在用户在父画布上向下移动鼠标的位置添加一个矩形。当我这样做的时候,我希望矩形能够接收鼠标向下并且能够被拖动。

但是,在我打开鼠标并再次按下鼠标之前,矩形什么也不会收到。

我尝试了previewMouseDown等,我尝试了e.Handled = true等,但它们都不起作用。该事件始终由父画布使用。

在预览上面有没有这样的机制:好的,现在你被设置为点击父画布,然后我添加矩形,哦,但是现在你被设置为点击矩形,所以最终我会让鼠标向下移动到矩形。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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中,你可以像这样绑定鼠标按下:

代码语言:javascript
复制
<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>

或者,您也可以这样做

代码语言:javascript
复制
<Your Control Here>
   <Border>
       <Border.InputBinding>
          <MouseBinding MouseAction="LeftClick" Command="{Binding DataContext.SomeCommand}"/>
        </Border.InputBindings>
  </Border>
</Your Control Here>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42396824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档