2016-08-22 3 views
0

に動作していないこれは、WPF-チュートリアルページから貼り付け動作のコピーです:サンプルドラッグ&ドロップの行動規範は

public class DragBehavior : Behavior<UIElement> 
{ 
    private Point elementStartPosition; 
    private Point mouseStartPosition; 
    private TranslateTransform transform = new TranslateTransform(); 

    protected override void OnAttached() 
    { 
     Window parent = Application.Current.MainWindow; 
     AssociatedObject.RenderTransform = transform; 

     AssociatedObject.MouseLeftButtonDown += (sender, e) => 
     { 
      elementStartPosition = AssociatedObject.TranslatePoint(new Point(), parent); 
      mouseStartPosition = e.GetPosition(parent); 
      AssociatedObject.CaptureMouse(); 
     }; 

     AssociatedObject.MouseLeftButtonUp += (sender, e) => 
     { 
      AssociatedObject.ReleaseMouseCapture(); 
     }; 

     AssociatedObject.MouseMove += (sender, e) => 
     { 
      Vector diff = e.GetPosition(parent) - mouseStartPosition; 
      if (AssociatedObject.IsMouseCaptured) 
      { 
       transform.X = diff.X; 
       transform.Y = diff.Y; 
      } 
     }; 
    } 
} 

そして、これは私のテストページです:

<Page x:Class="WPFApp.Pages.BehaviorPage" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:local="clr-namespace:WPFApp.Pages" 
     xmlns:b="clr-namespace:WPFApp.Behaviors" 
     mc:Ignorable="d" 
     d:DesignHeight="300" d:DesignWidth="300" 
     Title="BehaviorPage"> 

    <Grid> 
     <StackPanel > 
      <Border Background="LightBlue"> 
       <d:Interaction.Behaviors> 
        <b:DragBehavior/> 
       </d:Interaction.Behaviors> 

       <TextBlock Text="Drag me around!" Width="110" FontSize="14"/> 
      </Border> 
     </StackPanel> 
    </Grid> 
</Page> 

私はデバッグしたい場合には「OnAttached () 'は決してヒット/コールされません。だからドラッグ&ドロップも動作しません。

+1

ブレンドはVisualStudio2105に含まれており、双方向性DLLが付属しています。 の代わりに 'xmlns:d =" http://schemas.microsoft.com/expression/2010/interactivity "' の代わりに のxmlns:d =" http://schemas.microsoft.com/ expression/blend/2008 " OnAttachedメソッドが正しく呼び出されます。 – manni

+0

答えとして書いてください。答えとして受け入れることができます。 –

答えて

1

BlendはVisualStudio2105に含まれており、双方向性DLLが付属しています。 xmlns:d = "http://schemas.microsoft.com/expression/blend/"の代わりにxmlns:d = "http://schemas.microsoft.com/expression/2010/intera ctivity"というパスを使用する場合2008 "OnAttachedメソッドが正しく呼び出されます。

関連する問題