private static ListBoxItem FindSymmetryPoint(FrameworkElement frameworkElement) { PointViewModel dot = ((frameworkElement as ListBoxItem).Content) as PointViewModel; var listcanvas = VisualTreeHelper.GetParent(frameworkElement as DependencyObject) as Canvas; var listbox_me = VisualTreeHelper.GetParent(listcanvas) as ListBox; Teeth me = ViewUtils.FindParent(listbox_me, Type.GetType("Process_Page.ToothTemplate.Teeth")) as Teeth; var main = ((SmileDesign_Page)(Application.Current.MainWindow.Content)) as SmileDesign_Page; int idx_me = main.ToothControl.dic[me.Name]; int idx_you = idx_me + (idx_me >= 0 && idx_me < 3 ? +3 : -3); var parent = me.Parent as Grid; var myKey = main.ToothControl.dic.FirstOrDefault(p => p.Value == idx_you).Key; Teeth you = parent.FindName(myKey) as Teeth; ListBox listBox_you = you.FindName("list") as ListBox; return((ListBoxItem)(listBox_you.ItemContainerGenerator.ContainerFromIndex(dot.I))); }