private static Visual FindLastContainedTarget(Visual scope, Stop currentStop, DependencyProperty navigationModeProperty, IStopComparerProvider stopComparerProvider) { IComparer <Stop> stopComparer = stopComparerProvider.CreateComparer(currentStop); Stop targetStop = null; foreach (Stop stop in GetContainedStops(scope, currentStop.Element, navigationModeProperty)) { if (targetStop == null || stopComparer.Compare(targetStop, stop) <= 0) { targetStop = stop; } } return(targetStop != null ? targetStop.Element : null); }
private static Visual FindLastTarget(Visual scope, Stop currentStop, DependencyProperty navigationModeProperty, IStopComparerProvider stopComparerProvider) { return(GetNavigation(scope, navigationModeProperty).FindLastTarget(scope, currentStop, navigationModeProperty, stopComparerProvider)); }
private static Visual FindPreviousContainedTarget(Visual scope, Stop currentStop, DependencyProperty navigationModeProperty, IStopComparerProvider stopComparerProvider) { IComparer <Stop> stopComparer = stopComparerProvider.CreateComparer(currentStop); bool passedCurrentStop = false; Stop targetStop = null; foreach (Stop stop in GetContainedStops(scope, currentStop.Element, navigationModeProperty)) { if (stop.Element == currentStop.Element) { passedCurrentStop = true; continue; } int compareResult = stopComparer.Compare(currentStop, stop); if ((compareResult > 0 || compareResult == 0 && !passedCurrentStop) && // select stops with priority lower than currentStop, or the same priority before currentStop (targetStop == null || stopComparer.Compare(targetStop, stop) <= 0)) { targetStop = stop; } } return(targetStop != null ? targetStop.Element : null); }
public override Visual FindPreviousTarget(Visual scope, Stop currentStop, DependencyProperty navigationModeProperty, IStopComparerProvider stopComparerProvider) { return(KeyboardNavigationTarget.FindPreviousContainedTarget(scope, currentStop, navigationModeProperty, stopComparerProvider) ?? (scope.VisualParent != null ? KeyboardNavigationTarget.FindPreviousTarget(scope.VisualParent, new Stop(currentStop.Element, KeyboardNavigation.GetTabIndex(scope)), navigationModeProperty, stopComparerProvider) : null)); // translate currentStop and forward request to parent }
public override Visual FindLastTarget(Visual scope, Stop currentStop, DependencyProperty navigationModeProperty, IStopComparerProvider stopComparerProvider) { return(KeyboardNavigationTarget.FindLastContainedTarget(scope, currentStop, navigationModeProperty, stopComparerProvider)); }
public override Visual FindPreviousTarget(Visual scope, Stop currentStop, DependencyProperty navigationModeProperty, IStopComparerProvider stopComparerProvider) { return(KeyboardNavigationTarget.FindPreviousContainedTarget(scope, currentStop, navigationModeProperty, stopComparerProvider) ?? currentStop.Element); // stay at the edge }
public override Visual FindPreviousTarget(Visual scope, Stop currentStop, DependencyProperty navigationModeProperty, IStopComparerProvider stopComparerProvider) { // forward the request to the parent return(scope.VisualParent != null?KeyboardNavigationTarget.FindPreviousTarget(scope.VisualParent, currentStop, navigationModeProperty, stopComparerProvider) : null); }
public virtual Visual FindLastTarget(Visual scope, Stop currentStop, DependencyProperty navigationModeProperty, IStopComparerProvider stopComparerProvider) { return(scope.VisualParent != null? KeyboardNavigationTarget.FindLastTarget(scope.VisualParent, currentStop, navigationModeProperty, stopComparerProvider) : KeyboardNavigationTarget.FindLastContainedTarget(scope, currentStop, navigationModeProperty, stopComparerProvider)); }