如何在wpf中检查三个控件中的任何一个是否同时具有焦点?

Rel*_*ity 2 wpf focus groupbox

我有三个文本框...我想检查这三个文件中是否有任何一个关注它.

我试过这样的事情 - >在viewmodel中添加了三个属性......其值将由丢失/获得焦点事件切换.(我通过附属物做到了这一点).但在这种情况下...如果我将一个文本框中的四个文件移动到下一个...第一个文本框的焦点变为错误...下一个尚未设置...所以在这种情况下这些文本框都没有焦点...但第二个很快就会获得焦点.

作为一种解决方法,我正在尝试使用Group box ...来检查此控件是否具有焦点而不是检查所有三个.请告诉我这项工作

Rac*_*hel 10

为什么你需要知道他们是否有焦点?

Focus是一个特定于视图的功能,所以我希望你的ViewModel不关心它.

通常,如果我基于控件Focus执行某些操作,那么它适用于特定于视图的操作,例如DataTrigger,在这种情况下,我使用代码隐藏或触发器

代码背后的例子

if (tb1.IsFocused||  tb2.IsFocused || tb3.IsFocused)
{
    DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

触发示例

<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>
Run Code Online (Sandbox Code Playgroud)