WPF 프로그램에서 현재 (키보드) 포커스를 가져 와서 저장하고 나중에 다시 설정하려고합니다. WPF 키보드 포커스 가져 오기 및 복원
지금 현재 포커스를 얻으려면 내가 사용DependencyObject focusScope = FocusManager.GetFocusScope(d);
_lastFocus = FocusManager.GetFocusedElement(focusScope);
나중에 내가 사용을 설정하려면 :이 한 번 작동
if (_lastFocus != null)
{
IInputElement setFocus = _lastFocus;
_lastFocus = null;
d.Dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, new ThreadStart(delegate
{
FocusManager.SetFocusedElement(d, setFocus);
}));
}
. 그러나 다시 시도해도 초점 맞추기를 시도하는 불쾌감을주는 대화 상자를 다시 만들 때까지 작동하지 않습니다. 초점 맞추기는 매우 똑같습니다 (초점 맞추기 및 추적 설정). 대신 메인 윈도우 자체가 포커스를 얻습니다.
한 번 WPF에서 두 가지 종류의 포커스가 있다고 들었지만 일관된 결과를 얻기 위해 다른 설정도해야합니까?
대단원! 논리적 초점을 설정할 때 Keyboard.Focus (setFocus)를 추가했는데 이제는 작동합니다. – Sam
실제로 [FocusManager.IsFocusScope] (http://msdn.microsoft.com/en-us/library/system.windows.input.focusmanager.isfocusscope)를 사용하여 캡처/복원 코드를 완전히 제거 할 수 있습니다. aspx). – Olly
* Panel 기본 클래스와 같은 일부 클래스에는 기본적으로 Focusable이 false로 설정되어 있습니다. 이것이 나를위한 열쇠였습니다. – dotNET