2017-02-22 9 views
0

Thumbを使用する四角形をドラッグすると、ドラッグすることができます。クリックしてドラッグすると、四角形のどこにでもドラッグできます。mousedownにコントロールを追加して新しいコントロールを追加すると、マウスが表示されます

今は、ユーザーが親キャンバスにマウスを置いた場所の中央に矩形を追加できます。私がするとき、私は長方形がmousedownを受け取り、引きずられることができるようにしたい。

しかし、マウスが上がってマウスが下がるまで、矩形は何も受け取りません。

私はpreviewMouseDownなどを試しましたが、e.Handled = trueなどを試しましたが、どれも動作しませんでした。イベントは常に親キャンバスで消費されます。

プレビューの上にも、次のようなメカニズムがありますか: 親キャンバスをクリックするように設定されている場合は、矩形を追加しますが、今は矩形をクリックするように設定されていますmousedownを長方形に与えます。

答えて

1

私はあなたのコードを見ていないので、私は確かにそれを言うことはできません.. mousedownのためにmvvmlightからのインタラクティブなeventtriggerを使用することを前提としています。あなたが行うことができるのは、あなたの矩形をドラッグすることができるはずです... canvasクラス(canvas.cs)がC#にあり、canvas.csの中にRect(Rectangle Rect = new Rectangle(。 ..))では、canvas.csではなくrectangle.csの中にmousedownコマンドを実装することができます。これを行う方法はたくさんあります。メインウィンドウの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> 
関連する問題