2017-02-22 29 views
0

我有一個用拇指能夠圍繞拖矩形。可以通過單擊並拖動矩形的任何位置來拖動它們。對鼠標按下並具有新的控制添加控件得到鼠標按下

現在,我想能夠在用戶在父畫布上隱藏的位置添加一個矩形。當我這樣做時,我想要矩形接收mousedown並能夠被拖動。

但是,矩形不會收到任何東西,直到我再次向上滑動鼠標。

我試過previewMouseDown等,我想e.Handled =真實的,等等,但他們沒有工作。該事件始終由父畫布消耗。

是否有甚至高於預覽,可以像一個機制: 那麼現在,你都設置爲單擊父畫布上,然後我添加矩形,哦,但你現在設置在矩形點擊所以最終我將給mousedown矩形。

回答

1

我還沒有看到你的代碼,因此我不能肯定地說..假設你使用mvvmlight中的交互事件觸發器來實現mousedown ..你可以做的是在矩形類中實現你的mousedown命令,那麼你應該可以拖動你的矩形... 假設你的c#中有一個canvas類(canvas.cs),在你的canvas.cs中,你有一個對象調用Rect(Rectangle Rect = new Rectangle(。 ..)),你可以在你的rectangle.cs中實現你的mousedown命令而不是canvas.cs。有很多方法可以做到這一點..或者在mainwindow的xaml中..你可以執行引用Rect類的綁定。例如,在你的mainwindow.xaml.cs中,你可以將datacontext設置爲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>