WPF의 텍스트 상자에 포커스 설정
에 포커스를 설정하는 방법TextBox
WPF의 요소
다음 코드가 있습니다.
txtCompanyID.Focusable = true;
txtCompanyID.Focus();
...하지만 효과가 없습니다.
감 잡히는 게 없어요?
XAML에서:
<StackPanel FocusManager.FocusedElement="{Binding ElementName=Box}">
<TextBox Name="Box" />
</StackPanel>
지금까지 아무도 왜 질문의 코드가 작동하지 않는지 설명하지 않았습니다.윈도우의 생성자에 코드가 배치된 것 같습니다.하지만 현재로서는 초점을 맞추기에는 너무 이른 시기입니다.이 작업은 창에서 상호 작용할 준비가 되면 수행해야 합니다.코드에 가장 적합한 위치는 Loaded 이벤트입니다.
public KonsoleWindow() {
public TestWindow() {
InitializeComponent();
Loaded += TestWindow_Loaded;
}
private void TestWindow_Loaded(object sender, RoutedEventArgs e) {
txtCompanyID.Focus();
}
}
FocusManager.SetFocusedElement(parentElement, txtCompanyID)
txtCompanyID.Focusable = true;
Keyboard.Focus(txtCompanyID);
msdn:
키보드 포커스가 있는 요소는 전체 바탕 화면에 하나만 있을 수 있습니다.WPF에서 키보드 포커스가 있는 요소는 IsKeyboardFocus가 true로 설정됩니다.
설정 라인 이후에 중단하고 다음 값을 확인할 수 있습니다.IsKeyboardFocused
소유물.또한 정말로 그 선에 도달했는지 또는 그 이후에 초점을 맞추기 위해 다른 요소를 설정했는지도 확인합니다.
사용해 보십시오.MyTextBox.Focus ( );
스택 패널이 아닌 그리드를 사용했기 때문에 이 모든 것이 제대로 작동하지 않았습니다.
저는 마침내 이 예를 찾았습니다: http://spin.atomicobject.com/2013/03/06/xaml-wpf-textbox-focus/
다음과 같이 수정했습니다.
'Resources' 섹션에서 다음을 수행합니다.
<Style x:Key="FocusTextBox" TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=textBoxName, Path=IsVisible}" Value="True">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=textBoxName}"/>
</DataTrigger>
</Style.Triggers>
</Style>
내 그리드 정의에서:
<Grid Style="{StaticResource FocusTextBox}" />
다른 답변에서 해결책을 찾지 못한 경우를 대비하여 그렇게 문제를 해결했습니다.
Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
TEXTBOX_OBJECT.Focus();
}), System.Windows.Threading.DispatcherPriority.Render);
제가 이해한 바로는 다른 해결책들은 다음과 같은 전화 때문에 작동하지 않을 수도 있습니다.Focus()
응용 프로그램이 다른 구성 요소를 렌더링하기 전에 호출됩니다.
뒤에 있는 코드에서는 이렇게 해야만 이를 달성할 수 있습니다.
private void Window_Loaded(object sender, RoutedEventArgs e)
{
txtIndex.Focusable = true;
txtIndex.Focus();
}
참고: 창이 로드되기 전에 작동하지 않습니다.
또 다른 가능한 솔루션은 무료 DevExpress MVVM Framework에서 제공하는 FocusBehavior를 사용하는 것입니다.
<TextBox Text="This control is focused on startup">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:FocusBehavior/>
</dxmvvm:Interaction.Behaviors>
</TextBox>
로드될 때, 특정 이벤트가 발생하거나 속성이 변경될 때 컨트롤의 초점을 맞출 수 있습니다.
언급URL : https://stackoverflow.com/questions/1345391/set-focus-on-textbox-in-wpf
'programing' 카테고리의 다른 글
Mongod 서비스 시작이 코드 100으로 종료됩니다. (0) | 2023.05.20 |
---|---|
사이트의 기본 URL을 어떻게 알 수 있습니까? (0) | 2023.05.20 |
Eclipse - "작업영역이 사용 중이거나 작성할 수 없습니다. 다른 작업영역을 선택하십시오." (0) | 2023.05.20 |
NodeJs: /usr/bin/env: 노드를 설치할 수 없습니다.해당 파일 또는 디렉터리가 없습니다. (0) | 2023.05.20 |
package.json에서 필요한 Node.js 버전을 지정하려면 어떻게 해야 합니까? (0) | 2023.05.20 |