我正在使用 Kinect.Toolbox 鼠标和磁性控件。它在单个页面中运行良好。但是,当我有不同的页面在它们之间导航时,我收到一个错误:InvalidOperationException Unhandeled in user code - 指定的视觉对象不是此视觉对象的祖先。这发生在 MouseController.cs 第 158 行:
var position = element.TransformToAncestor(rootVisual).Transform(new Point(0, 0));
通过一些调试,我了解到上一页中的磁性控制器仍在列表中,这导致了问题。所以我尝试在导航到下一页之前清除它们:
MouseController.Current.MagneticsControl.Clear();
但是,我仍然得到同样的错误。如果我在导航之前清除列表我会收到错误,因为我仍在同一页面中并且磁力控制列表为空,如果我在导航后清除它们我没有收到错误但我的磁力控制器没有得到识别因为他们从列表中清除。有人对此有解决方案吗?清除此列表的正确位置在哪里?
这是我有磁性控件的 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);
}