2

タイルボタンでのホバリング (onmouseover など) を検出しようとしていますが、ビルドインハンド ポインターである必要があります。ビルド イン イベントが見つからず、これを試しましたが、例外が発生しました (指定されたバインディング制約に一致する型 'Microsoft.Kinect.Toolkit.Controls.KinectUserViewer' でのコンストラクターの呼び出しにより、例外がスローされました'

例外を与える XAML:

 <k:KinectUserViewer k:KinectRegion.KinectRegion="{Binding ElementName=kinectRegion}"     HorizontalAlignment="Center" Height="150" VerticalAlignment="Top" Width="150"     Canvas.Left="820"/>
        <k:KinectRegion KinectSensor="{Binding Kinect, ElementName=kinectSensorChooser1}"     Height="919" Width="1920" x:Name="kinectRegion" Canvas.Top="151">

ボタンは forloop によって自動的に作成されます。

CS:

public static readonly RoutedEvent HandPointerEnterEvent = EventManager.RegisterRoutedEvent(
        "HandPointerEnter", RoutingStrategy.Direct, typeof(EventHandler<HandPointerEventArgs>), typeof(KinectRegion));

    public static readonly RoutedEvent HandPointerLeaveEvent = EventManager.RegisterRoutedEvent(
        "HandPointerLeave", RoutingStrategy.Direct, typeof(EventHandler<HandPointerEventArgs>), typeof(KinectRegion));

...

 public MainWindow()
    {
        InitializeComponent();

        KinectRegion.AddHandPointerEnterHandler(this, this.OnHandPointerEnter);
        KinectRegion.AddHandPointerLeaveHandler(this, this.OnHandPointerLeave);
 ....
 private void OnHandPointerEnter(object sender, HandPointerEventArgs handPointerEventArgs)
    {
        this.Close();//Trying to see if it works
    }
    private void OnHandPointerLeave(object sender, HandPointerEventArgs handPointerEventArgs)
    {
        this.Close();//Trying to see if it works
    }

私が試したことは、このリンクから来ています: Kinect SDK 1.7 でのボタン イベントの引き渡し

ただし、最初の 2 行 (public static) を削除すると、プログラムは動作しますが、ホバーは検出されません。これらの行では、例外がスローされます。

基本的に私が最初に試みているのは、ホバーを検出してからプログラムを閉じることです (それが機能するかどうかは良い考えです)。

助けてくれてありがとう

4

1 に答える 1

1

あなたのエディション

KinectRegion.AddHandPointerEnterHandler(this, this.OnHandPointerEnter);
KinectRegion.AddHandPointerLeaveHandler(this, this.OnHandPointerLeave);

最初のパラメータ「this」はフォームを意味します

ただし、「KinectTileButton」である必要があります

私の版 - それは動作します。

KinectRegion.AddHandPointerEnterHandler(this.KinectTileButtonName, this.OnHandPointerEnter);
KinectRegion.AddHandPointerLeaveHandler(this.KinectTileButtonName, this.OnHandPointerLeave);
于 2013-10-22T16:16:35.797 に答える