我正在使用Kinect.Toolbox鼠標和磁性控件。它在單個頁面中完美地工作。但是,當我在他們之間導航的不同頁面出現錯誤時:InvalidOperationException在用戶代碼中未取消 - 指定的視覺不是此視覺中的祖先。這發生在MouseController.cs 158線:Kinect工具箱和磁性控制頁在頁面之間導航時
var position = element.TransformToAncestor(rootVisual).Transform(new Point(0, 0));
有了一些調試我瞭解,從上一個頁面的磁controlls仍然在列表中,引起該問題。所以我嘗試清除它們,然後導航到下一頁:
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);
}