私はビューが1つしかありません。TextBox
とその下にあるのはButton
です。ウィンドウがロードされたら、TextBox
にフォーカスが欲しいです。WPF MVVM Focus Field on Load
MVVMを使用していない場合は、LoadedイベントでTextBox.Focus()
と呼ぶだけです。しかし、私のViewModelは私のビューについて知らないので、私のビューのコードビハインドにコードを入れないでこれをどのように達成できますか?
EDIT: は答えを読んだ後、私は、ビューのXAMLで
<DockPanel FocusManager.FocusedElement="{Binding ElementName=MessageTextBox}">
<TextBox Name="MessageTextBox" Text="{Binding Message}"/>
</DockPanel>
をこのコードを配置することを決め、これが最初のページのフォーカス以外のものであれば、それはから制御することができるので、私はおそらく、ジョン・ギャロウェイの答えをお勧めしますViewModel
これはまさに私が探していたものです。私はこのコードがビューに属していると思うし、何らかの理由で私はそれがコードの背後にあるxamlの方がより好きです。 –
Gallowayの提案は、ViewModelからフォーカスを制御することを可能にします...あなたも同様にそれを詳しく見ることができます。 –
他の回答の一部を読んだあと、そのコードがViewModelに属しているかどうかわかりません。それは見方に直接結びついているようです。おそらく理にかなっている他のイベントに基づいて実際にフォーカスを移動していたより複雑なページがあれば、それはまだそれが素晴らしいトリックだと言いました。 –