首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UWP TextBox中游标的错误行为

问UWP TextBox中游标的错误行为
EN

Stack Overflow用户
提问于 2018-05-16 08:17:59
回答 1查看 174关注 0票数 1

假设我有一个数据类型为ViewModel的float,并实现了INotifyPropertyChanged接口。

代码语言:javascript
复制
private float Amount;

然后在我的UI中:

代码语言:javascript
复制
<TextBox Text="{x:Bind Amount, Mode=TwoWay}" />

当我试图键入字符. (句点)时,文本光标回到起始位置,并在两次按句点之后立即出现。是什么导致了这种行为?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-16 08:50:07

正如注释中提到的,我已经测试了UpdateSourceTrigger=PropertyChanged时的代码。问题是,PropertyChanged会导致绑定在每次击键后立即更新。因此,当输入不包含有效的float时,该行为是非常不可预测的。到目前为止,我已经看到了三种不同的行为。一旦只输入一个数字并在此之后输入句号,绑定有时会将其转换为十进制:

​

​

但有时这种情况并没有发生,而控件只允许我输入3.而不作任何更改。这种行为看起来真的很随意。关键是设置为backing属性的value然后通过PropertyChanged事件和数据绑定在UI中反映,这将导致文本更改,光标跳转。

简单地说,这里的问题是属性是float,而输入接受任何string。解决问题的方法可能是为绑定使用string属性,如AmountText,然后在setter中验证文本实际上是有效的float,解析文本并手动设置Amount属性。这样,只要输入有效的输入,就可以立即更新值,同时也可以避免所看到的奇怪行为。

还可以查看WinRTXamlToolkit及其控制,这可能是实现目标的更好的解决方案,因为它为用户输入数字值提供了一种自然的方式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50365686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档