0

ポップアップでのみkinectリージョンを使用したい。だから、閉じているときは、kinectカーソルやそのようなものを見たくありません。問題は、ポップアップが開いているときにカーソルが表示されないことです。

これは私のxamlコードです。リージョン内にポップアップがあります。

 <k:KinectRegion Name="kurs" Margin="0,0,0,0" >
            <Popup  Placement="Left" PlacementTarget="{Binding ElementName=OptionOfDrawing}" PopupAnimation="Fade" x:Name="Popup" 
                   IsOpen="False">
                <StackPanel Height="325" Width="492" Background="White">
                    <TextBlock Margin="0 0 0 0">FontSize</TextBlock>

                    <k:KinectScrollViewer VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Auto" 
                                      VerticalAlignment="Bottom">
                        <StackPanel Orientation="Horizontal" Name="MyScroll" />
                    </k:KinectScrollViewer>

                    </Grid>
                </StackPanel>
            </Popup>
        </k:KinectRegion>

この名前空間を追加しました

 xmlns:k="http://schemas.microsoft.com/kinect/2013".

これは私のコードビハインドです。

      void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {

      if (sen != null && this.Popup.IsOpen == true) 

            kurs.KinectSensor = KinectSensor.KinectSensors[0];


        sen = KinectSensor.KinectSensors.FirstOrDefault();

        if (sensor == null)
        {
            MessageBox.Show("I need kinect");
            this.Close();
        }



        sen.ColorStream.Enable();
        sen.ColorFrameReady += new EventHandler<ColorImageFrameReadyEventArgs>(sensor_ColorFrameReady);

        sen.DepthStream.Enable(); 
        sen.SkeletonStream.Enable();


        sen.SkeletonFrameReady += new EventHandler<SkeletonFrameReadyEventArgs>( sensor_SkeletonFrameReady);
        sen.DepthFrameReady += new EventHandler<DepthImageFrameReadyEventArgs>( sensor_DepthFrameReady);
        interactionstream = new InteractionStream(sen, new NewInteractionClient());
        interactionstream.InteractionFrameReady += new EventHandler<InteractionFrameReadyEventArgs>( interactionstream_InteractionFrameReady);


        sen.Start();
        sen.ElevationAngle = 0;

}

1 つの kinect デバイスを 2 つの異なる KinectSensor オブジェクトに接続できないことはほぼ確実です。では、ポップアップが開かれると、kinect デバイスがリージョンに接続され、この行は実行されるべきではありませんか?

sen = KinectSensor.KinectSensors[0];

どんなアドバイスも私にとってはかけがえのないものです。

4

1 に答える 1

0

別のバインド方法を試すことができます。

//.. Bind the sensor to your KinectRegion - kurs
var regionSensorBinding = new Binding("Kinect") { Source = kurs };
BindingOperations.SetBinding(kurs, KinectRegion.KinectSensorProperty, regionSensorBinding);

これは、コード ビハインド セクションで行います。

このバインディングをクリアするには:

//.. Clear your region binding
BindingOperations.ClearBinding(kurs, KinectRegion.KinectSensorProperty);

現在のセンサーがnullでないと判断した後、リージョンにバインドしてください。

于 2013-08-21T20:21:04.593 に答える