从行为手动设置焦点后,条目被阻止

问题描述

我在 HID 模式下使用移动条码扫描器。我在屏幕上有一个条目,我试图将注意力集中在它上面,这样用户就不会无意中点击其他地方而失去对条目的关注。我尝试通过创建行为并将其附加到我的 ExtendedEntry 来实现此目的,这只是自定义 Entry,在按下或聚焦时隐藏键盘

public class HoldFocusBehavior : Behavior<ExtendedEntry>
{
    protected override void OnAttachedTo(ExtendedEntry bindable)
    {
       bindable.Unfocused += Bindable_Unfocused;
       bindable.Completed += Bindable_Completed;
       base.OnAttachedTo(bindable);
    }

    protected override void OnDetachingFrom(ExtendedEntry bindable)
    {
       bindable.Unfocused -= Bindable_Unfocused;
       bindable.Completed -= Bindable_Completed;
       base.OnDetachingFrom(bindable);
    }

    private void Bindable_Completed(object sender,System.EventArgs e)
    {
        if (!((ExtendedEntry)sender).IsFocused)
        {
            ((ExtendedEntry)sender).Focus();
        }
    }

    private void Bindable_Unfocused(object sender,FocusEventArgs e)
    {
        ((ExtendedEntry)sender).Focus();
    }
}

但问题是,当您扫描条形码并再次获得焦点时,条目会被阻止,并且您无法使用物理键盘或扫描仪输入任何内容,也无法从条目中删除文本。 当我只使用 Completed 事件时不会发生这种情况,但在这种情况下,用户可以单击其他地方并失去对不得发生的条目的关注。如果我只使用 Unfocused 事件,则在输入条形码后返回焦点但条目被阻止。

事件的顺序是 Unfocused 然后是 Completed

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)