하나의 뷰에 TextBox
과 그 아래에 하나의 숫자가 Button
인 뷰가 있습니다. 창이로드 될 때 TextBox
에 포커스가 있기를 원합니다.WPF MVVM 포커스 필드로드시
MVVM을 사용하지 않는 경우 Loaded 이벤트에서 TextBox.Focus()
을 호출하기 만하면됩니다. 그러나 내 ViewModel은 내보기에 대해 알지 못해서 내보기의 코드 숨김에 코드를 넣지 않고 어떻게이 작업을 수행 할 수 있습니까?
편집 : 답변을 읽은 후 나는이 그것을 제어 할 수 있기 때문에 아마 존 갤러웨이의 답변을 추천 할 것 초기 페이지 초점 이외 인 경우 뷰 XAML
<DockPanel FocusManager.FocusedElement="{Binding ElementName=MessageTextBox}">
<TextBox Name="MessageTextBox" Text="{Binding Message}"/>
</DockPanel>
에이 코드를 넣어하기로 결정 ViewModel
그게 내가 찾고 있었던 바로 그 것이다. 이 코드는 뷰에 속한다고 생각합니다. 어떤 이유로 xaml 코드의 코드보다 코드를 더 좋아합니다. –
Galloway의 제안을 통해 ViewModel에서 포커스를 제어 할 수 있습니다 ... 또한이를 자세히 살펴볼 수도 있습니다. –
다른 답변을 읽고 나면 코드가 ViewModel에 속하는지 확실하지 않습니다. 그것은 시야에 직접 묶여있는 것 같습니다. 아마 실제로 합리적인 다른 이벤트를 기반으로 포커스를 옮기는 더 복잡한 페이지가 있다면. 그것은 여전히 가지고있는 좋은 속임수라고 말했다. –