2015-10-16 3 views
0

Как сфокусироваться на элементе в пользовательском диалоге?Callisto custom dialog focus

Я стараюсь использовать edGroupName.Focus (FocusState.Keyboard/Programmatic) до и после открытия. Это не работает.

//NewGroup is <callisto:CustomDialog> 
NewGroup.IsOpen = true; 

//edGroupName is <TextBox> 
edGroupName.Focus(FocusState.Keyboard); 

ответ

0

При установке .IsOpen диалоговое окно не открывается сразу - он не будет до тех пор, оставить метод и управление возвращается в цикл обработки событий. Поэтому, когда вы вызываете .Focus(), текстовое поле на самом деле пока не отображается. Вы должны отложить свой вызов .Focus() до тех пор, пока текстовое поле не появится на экране.

Это работает для меня:

NewGroup.IsOpen = true; 

await Task.Factory.StartNew(() => Dispatcher.RunAsync(CoreDispatcherPriority.Low, 
       () => edGroupName.Focus(FocusState.Keyboard)));