Kinect.Toolboxマウスと磁気コントロールを使用しています。1ページで問題なく動作します。ただし、ページ間を移動するページが異なると、次のエラーが発生します。InvalidOperationExceptionユーザーコードで処理されません-指定されたビジュアルは、このビジュアルの祖先ではありません。これはMouseController.csの158行目で発生します:
var position = element.TransformToAncestor(rootVisual).Transform(new Point(0, 0));
いくつかのデバッグで、前のページの磁気制御装置がまだリストにあり、それが問題の原因であることがわかりました。そこで、次のページに移動する前に、それらをクリアしてみました。
MouseController.Current.MagneticsControl.Clear();
ただし、それでも同じエラーが発生します。ナビゲートする前にリストをクリアすると、同じページにいてMagneticControlsリストが空になるため、エラーが発生します。ナビゲーション後にリストをクリアすると、エラーは発生しませんが、磁気コントロールは認識されません。それらはリストからクリアされます。誰かがこれに対する解決策を持っていますか?そして、このリストをクリアする正しい場所はどこですか?
これが私が磁気制御を持っているXAMLです:
<Grid>
<Button Content="1" local:MagneticPropertyHolder.IsMagnetic="True" Click="Button_Click"/>
</Grid>
Button_Clickで、別のページに移動します。このページにも磁気制御があります。
private void Button_Click(object sender, RoutedEventArgs e)
{
MouseController.Current.MagneticsControl.Clear();
keyboard pageKeyboard = new keyboard();
NavigationService navigationService = NavigationService.GetNavigationService(this);
navigationService.Navigate(pageKeyboard);
}