为啥 Completed 事件发生在 Focus() 上?
Posted
技术标签:
【中文标题】为啥 Completed 事件发生在 Focus() 上?【英文标题】: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 键实际上执行了两次。 【参考方案1】:使用软键盘代替硬件键盘可以解决这个问题。很奇怪。
启用软键盘:Visual Studio android Emulator Display Keyboard
【讨论】:
以上是关于为啥 Completed 事件发生在 Focus() 上?的主要内容,如果未能解决你的问题,请参考以下文章