내 현재의 평판이 "1337"이기 때문에 현재 활동을 연기하고 있습니다. :)일반 질문 WPF 컨트롤 동작 및 호출 사용
이것은 "이유"가 아니라 "방법"의 질문입니다. 기본적으로 WPF는 창을 열 때 첫 번째 컨트롤에 포커스를 설정하지 않는 것 같습니다. 또한 텍스트 상자에 포커스가있을 때 기본적으로 텍스트 상자에는 선택된 텍스트가 없습니다. 그래서 기본적으로 창을 열면 윈도우의 첫 번째 컨트롤에 포커스를두고 컨트롤이 텍스트 상자이면 기존 텍스트 (있는 경우)를 선택해야합니다.
이러한 동작을 수행하기 위해 온라인에서 몇 가지 팁을 찾아서 결합했습니다. 내 창문의 생성자에 배치 한 아래 코드는 내가 작성한 코드입니다.
Loaded += (sender, e) =>
{
MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
var textBox = FocusManager.GetFocusedElement(this) as TextBox;
if (textBox != null)
{
Action select = textBox.SelectAll;
//for some reason this doesn't work without using invoke.
Dispatcher.Invoke(DispatcherPriority.Loaded, select);
}
};
그래서 내 질문에. Dispatcher.Invoke를 사용하지 않고 위의 코드가 작동하지 않는 이유는 무엇입니까? 창 (또는 텍스트 상자)의 동작에 내장 된 것이 선택된 텍스트가로드 후 선택 취소됩니다?
어쩌면 관련, 아마 - 나는 형태의 동작을 제어 할 수 Dispatcher.Invoke를 사용했던 곳의 또 다른 예 :
WPF Focus In Tab Control Content When New Tab is Created
죄송합니다. 귀하의 1337을 망칠 필요가 있었지만 큰 질문이었습니다. –