private void OnNext(object obj) { if (obj.ToString() == "Next") { click += 1; if (ChartViewModel.Item == null) { if (CurrentItem != null) { ((CurrentItem as OrgNodeViewModel).Content as Employee).IsFocus = NodeFocusState.Normal; } if (PreviousItem != null) { ((PreviousItem as OrgNodeViewModel).Content as Employee).IsFocus = NodeFocusState.Normal; } ChartViewModel.StartSearch(); ChartViewModel.Item = ChartViewModel.Searchview.SearchResult.GetEnumerator(); MoveNext(); previousstack = new Stack <OrgNodeViewModel>(); } else { PreviousItem = CurrentItem; if (PreviousItem != null) { ((PreviousItem as OrgNodeViewModel).Content as Employee).IsFocus = NodeFocusState.Normal; } if (PreviousItem != null && previousstack != null) { ((PreviousItem as OrgNodeViewModel).Content as Employee).IsFocus = NodeFocusState.Normal; if (!previousstack.Contains((PreviousItem as OrgNodeViewModel))) { (previousstack as Stack <OrgNodeViewModel>).Push((PreviousItem as OrgNodeViewModel)); } } MoveNext(); if (CurrentItem == null) { ChartViewModel.Item.Reset(); MoveNext(); } } } else if (obj.ToString() == "Previous") { if (previousstack == null) { previousstack = new Stack <OrgNodeViewModel>(); foreach (var item in ChartViewModel.Searchview.SearchResult) { previousstack.Push(item as OrgNodeViewModel); } } if (previousstack != null && previousstack.Count > 0) { if (CurrentItem != null) { ((CurrentItem as OrgNodeViewModel).Content as Employee).IsFocus = NodeFocusState.Normal; } if (previous == null) { previous = previousstack.GetEnumerator(); MovePrevious(); } else { PreviousItem = previous.Current; if (previous.Current != null) { if (previousstack.Last <OrgNodeViewModel>() == previous.Current) { ((PreviousItem as OrgNodeViewModel).Content as Employee).IsFocus = NodeFocusState.Normal; previous.Reset(); } else { ((PreviousItem as OrgNodeViewModel).Content as Employee).IsFocus = NodeFocusState.Normal; } } else { previous.Reset(); } MovePrevious(); } } } }