3

我有三个文本框......我想检查这三个文本框是否有焦点。

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

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

4

1 回答 1

12

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

焦点是特定于视图的功能,所以我希望您的视图模型不关心它。

通常,如果我基于控制焦点做某事,它是针对特定于视图的操作,例如 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 回答