I solved it finally. First I tried setting focus to the control I wanted which was a ListView. Next, I tried setting focus to "this", followed by each parent container of the ListView in case the scope of the focus was wrong. Next, I decided that setting IsBusy to false on the RadBusyIndicator must have something threaded and I'd have to call the focus at a separate time.
At this point I created a Action and dispatched it with a priority of application idle. This still did not solve it.
Finally I put in a timer that I call ever 100ms but only for so many times. This is terrible solution to me, but it does work as expected.
DispatcherTimer t = new DispatcherTimer(DispatcherPriority.Normal);
t.Tag = 0;
t.Interval = TimeSpan.FromMilliseconds(100);
t.Tick += (obj, e2) =>
((DispatcherTimer)t).Tag = ((int)((DispatcherTimer)t).Tag) + 1;
if (lvSearch.Items.Count > 0)
if (((int)((DispatcherTimer)t).Tag > 5) || (FocusManager.GetFocusedElement(this) as ListViewItem != null))