Существует простое решение, по крайней мере, в Silverilght 4 и выше.Прослушайте событие LayoutUpdated в ScrollViewer и установите свойство IsTabStop на основе состояния полос прокрутки.
Например, если вы используете только вертикальную полосу прокрутки:
void myScrollViewer_LayoutUpdated(object sender, EventArgs e)
{
//this should only be a tabstop if the scrollbar is visible.
myScrollViewer.IsTabStop =
(myScrollViewer.ComputedVerticalScrollBarVisibility == Visibility.Visible);
}