【发布时间】:2020-05-13 10:28:49
【问题描述】:
这很难解释,所以请看下面的 WPF gif -
我有一个字符串格式为 {0:N2} 并绑定到属性的文本框。
这里有两个问题-
(1) 按下小数键时,会添加另一个小数。
(2) 在退格期间,删除小数位后 - 插入符号不会跳过小数位,而是开始将“00”添加到数字本身。
我针对第 (1) 点做了一个解决方法 -
private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Decimal)
{
e.Handled = true;
((TextBox)sender).CaretIndex += 1;
}
}
如果在应用程序中有更好的方法来处理此类事情 - 请告诉我。
现在,我该如何处理第二个问题?我尝试实施的解决方法是 - 如果达到小数点,则处理按键并移动插入符号的位置。不确定这是否是一个好的解决方案,如果是,如何知道我何时到达小数点?
将插入符号索引与文本框值的长度进行比较只是为了知道它是否已到达小数点似乎有点过头了。这两个问题的正确解决方案是什么?
【问题讨论】:
-
我猜你的绑定中有 UpdateSourceTrigger="PropertyChanged" 。如果您删除它,文本框的行为是否更像您想要的那样?
-
哇哦!是的,删除它,确实使它正常运行。将 sourcetrigger 更改为 lostfocus,因为它仍然为我提供了我需要的行为。为什么'PropertyChanged' 让它表现得像那样?另外,如果您可以将其作为答案发布,我将接受它作为解决方案。
标签: c# wpf textbox string-formatting