私は複数のテキストボックスでグリッドを持っています。アクションに応じて、ユーザーがフォーカスを取る可能性があるのは、テキストボックスの1つに変更する必要があります。現在のソリューションでは、ViewModelの文字列プロパティとxamlのデータトリガを使用してフォーカスを変更しています。それはうまく動作しますが、これを達成するためにはかなりラウンドアラウンドな方法のようですので、私はそれが明確な方法で行うことができますか?あなたがプロパティの値と要素の名前を見ることができるようにMVVMでWPFのフォーカスを設定
<Grid.Style>
<Style TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding FocusedItem}" Value="number">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=number}"/>
</DataTrigger>
<DataTrigger Binding="{Binding FocusedItem}" Value="name">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=name}"/>
</DataTrigger>
<DataTrigger Binding="{Binding FocusedItem}" Value="id">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=id}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
は同じであるので、私が代わりに要素ごとに1つのトリガーを有していると、このI単一のトリガを行うしたいと思います。
誰かがよりクリーンな方法を考え出すことができますか?事前
このようにフォーカスを設定する理由は何ですか?ユーザーがTabIndexでタブすることもできるので、フォーカスを一度設定する必要があるのは – WiiMaxx
です。このソリューションはあなたにとって役に立ちます。 – blindmeis
個人的にフォーカスはUI固有のコンセプトだと思います私のViewModelではなくViewのコードビハインドでのすべてのフォーカス処理(フォーカスにビジネスロジックで特定の意味がある場合を除きます)。 – Rachel