【问题标题】:Why the Completed event occur on Focus()?为什么 Completed 事件发生在 Focus() 上?
【发布时间】:2017-05-12 09:48:17
【问题描述】:

当控件具有焦点(条目)时触发的 Completed 事件上的 Xamarin 表单存在一些问题

下面是视图:

  <Entry
                x:Name="EntryOrderNumber"
                Placeholder="MFGO Number"
                Text="{Binding TextOrderEntry}" />

  <Entry
                x:Name="EntryMachineNumber"
                Placeholder="Machine Number"
                Text="{Binding TextMachineEntry}" />

这是我控制放置在 view.cs 中的偶数的地方

public ProductionOrderPage()
        {
            InitializeComponent();
            BindingContext = App.Locator.ProductionOrderPageVM;
            EntryOrderNumber.Completed += EntryOrderNumber_Completed;
            EntryMachineNumber.Completed += EntryMachineNumber_Completed;
            EntryTotalPosition.Completed += EntryTotalPosition_Completed;


        }

        private void EntryMachineNumber_Completed(object sender, EventArgs e)
        {
            EntryMachineNumber.Unfocus();         
            EntryTotalPosition.Focus();
        }

        private void EntryOrderNumber_Completed(object sender, EventArgs e)
        {
            EntryOrderNumber.Unfocus();            
            EntryMachineNumber.Focus();
        }

我的问题是:当条目(文本字段)已聚焦时,已触发 Completed 事件,导致焦点将按照 Completed 事件中的设置连续转到另一个字段。

  • 正在调试并部署到模拟器上的应用

  • 使用 MVVMlight

非常感谢

【问题讨论】:

  • 我无法使用纯 Xamarin.Form 绑定重现这一点,即不使用 MVVMLight。在我的测试中 Completed 事件仅在用户按下返回时触发。我想知道 MVVMLight 在设置绑定时是否以某种方式插入了返回字符,从而导致 Completed 事件触发?
  • 当我做一些其他细节测试时,看起来 Return 键实际上执行了两次。

标签: xamarin visual-studio-2015 xamarin.forms


【解决方案1】:

使用软键盘代替硬件键盘可以解决这个问题。很奇怪。

启用软键盘:Visual Studio Android Emulator Display Keyboard

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    相关资源
    最近更新 更多