3

私は3つのテキストボックスを持っています...そして私はこれらの3つのいずれかに焦点が当てられているかどうかを確認したいと思いました。

私はこのようなものを試しました->viewmodelに3つのプロパティを追加しました...その値はロスト/ゲットフォーカスイベントによって切り替えられます。(私は添付のプロパティを介してこれを行いました)。しかし、この場合...あるテキストボックスから次のテキストボックスにフォーカスを移動すると...最初のテキストボックスのフォーカスが偽になります...そして次のテキストボックスはまだ設定されていません...したがって、この状態では、これらのテキストボックスのいずれにもフォーカスがありません...しかし、2番目のものはすぐに焦点を合わせます。

回避策として、3つすべてをチェックするのではなく、グループボックスを使用してこのコントロールにフォーカスがあるかどうかをチェックしようとしています。この作品かどうか教えてください

4

1 に答える 1

12

なぜ彼らがフォーカスを持っているかどうかを知る必要があるのですか?

フォーカスはビュー固有の関数なので、ViewModelsはそれを気にしないと思います。

通常、コントロールフォーカスに基づいて何かをしている場合、それはDataTriggerなどのビュー固有のアクション用であり、その場合はコードビハインドまたはトリガーを使用します

例の背後にあるコード

if (tb1.IsFocused||  tb2.IsFocused || tb3.IsFocused)
{
    DoSomething();
}

トリガーの例

<Style.Triggers>
    <DataTrigger Binding="{Binding IsFocused, ElementName=tb1}" Value="True">
        <Setter Property="BorderBrush" Value="Red" />
    </DataTrigger>

    <DataTrigger Binding="{Binding IsFocused, ElementName=tb2}" Value="True">
        <Setter Property="BorderBrush" Value="Red" />
    </DataTrigger>
    <DataTrigger Binding="{Binding IsFocused, ElementName=tb3}" Value="True">
        <Setter Property="BorderBrush" Value="Red" />
    </DataTrigger>
</Style.Triggers>
于 2011-11-14T17:33:29.973 に答える