繁体   English   中英

Xamarin MaskedBehavior 跳转光标问题的解决方法 - 每四个后有空格的 12 位数字

Workaround for Xamarin MaskedBehavior jumping cursor issue - 12-digit number with spaces after every four of them

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试为每四位数字后带有空格的 12 位数字创建一个Entry

我尝试使用StringFormat但它不能完全工作。 根据我的阅读,它适用于对指定文本而不是条目进行操作的标签。

我使用了 Xamarin 社区工具包中的MaskedBehavior

<Entry 
   Margin="25,0,25,0"
   Keyboard="Numeric">
   <Entry.Behaviors>
       <xct:MaskedBehavior Mask="XXXX XXXX XXXX"/>
   </Entry.Behaviors>
</Entry>

但每次用户在Entry中间键入内容或从那里删除数字时,光标跳到末尾似乎都有问题。 我在 XCT GitHub 页面上打开了一个问题报告,但尚未收到答案: https ://github.com/xamarin/XamarinCommunityToolkit/issues/1879

蒙面行为问题

由于这个 Mask 有问题,我暂时放弃了这个想法并尝试创建一个Converter

public class SerialNumberConverter : IValueConverter
{
    /// <summary>
    /// Removes spaces from the serial number before sending the number further to the code.
    /// </summary>
    public object ConvertBack(object value, Type targetType, object parameter,
        System.Globalization.CultureInfo culture)
    {
        return value is string str
            ? str.Replace(" ", "") 
            : null;
    }

    /// <summary>
    /// Adds spaces to the serial number to display it in a more user-friendly way on the layout.
    /// </summary>
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (!(value is string str))
        {
            return null;
        }

        for (var i = 4; i <= str.Length; i += 4)
        {
            // edge case: space shouldn't be added once user types in the 12th digit of the serial number
            if (i == 14 && str.Length == 14) break;

            str = str.Insert(i, " ");
            i++;
        }

        return str;
    }
}

但它有同样的问题。

我试图在Converter和自定义Renderer中对Entry.CursorPosition进行操作,但它的行为很奇怪。 每秒钟都能正常工作。 第一次,它做我想要的,第二次 - 它移动到位置 0 ,然后移动到Entry的末尾。 查看日志,我可以看到事件负责暗示文本更改触发两次,与我的代码无关。

你们中有人处理过这种情况吗? 我什至检查了我的银行移动应用程序,银行帐号的样式运行良好,所以它必须是可能的

我现在唯一的想法是创建一个具有四列和它们之间的间距的Grid ,但这需要再次为控件创建整个样式,所以我试图避免这种情况。

问题暂未有回复.您可以查看右边的相关问题.
1 Python:如何生成一个 12 位的随机数?

在Python中,如何生成一个12位的随机数? 是否有任何函数可以指定像random.range(12)这样的范围? 输出应该是一个包含 0-9 范围内的 12 位数字的字符串(允许前导零)。 ...

2012-11-21 15:06:05 6 29125   python
2 您如何生成一个随机的12位数字?

我正在用C ++写一个Bittorrent客户端,需要生成一个20字节的对等ID。 前8个字符由-WW1000- ,代表客户端的名称和版本号。 其他12位数字必须是一个随机数,每次客户端启动时都需要随机生成。 如何生成12位数字的随机数并将其与包含前8个字符( -WW1000- )的s ...

3 scala不会采用12位整数

好吧所以我刚刚开始使用scala ..遇到了一个很大的奇怪问题。 该代码工作正常,但以下不编译错误说整数太大。 这是怎么回事? scala不能处理12位数字吗? :/ ...

2010-09-05 01:42:13 3 7407   scala
4 从一组 15,000 个 12 位数字中找出相差 1 位的数字

我有一个大约 15,000 张 12 位条形码门票的列表。 大多数情况下,它们是从纸张或电话屏幕上扫描出来的,但有时是输入的(屏幕破裂等)。如果我们有任何一组相差 1 位数的代码,我将如何查找,所以输入第一个输入错误的数字可能会得到另一个有效代码? 代码号是 12 位整数,在 1000000000 ...

7 如何使用密码和Java将12位十进制数字加密/解密为其他数字?

我已经读过《 使用Java加密整数》和《 使用通行短语用DES加密》 。 我需要的是一个简单的Encrypter,它将具有以下约束的12位数字转换为12位数字: 加密必须依赖于密码(在应用程序的整个生命周期中保持不变),而不能依赖其他任何密码。 映射必须为1-1(无哈希且 ...

8 在长型变量中存储12位整数会产生编译错误,为什么? [重复]

这个问题已经在这里有了答案: 用Java初始化很长的 4个答案 我正在尝试从Euler项目中解决一个问题,它涉及对大量对象进行计算。 我知道使用long来分配大数字,但是在编译时会出现以下错误: 错误:整数太大:600851475143长数字= 6008 ...

2015-03-01 22:04:53 1 879   java
9 找到一个四位数的数字,然后输入文本

我需要从.sql文件名中提取一些数字:从“ TDB_full_335.51_2013_02_14.sql”中,我只希望“ 2013_02_14”,我可以通过以下方式获得此文件: 现在可以,但是如果文件名长度更改,则将失败。 有没有一种方法可以搜索4位数字“ 2013”​​并在“ .sq ...

10 长12位数?

我试图使用12位long的数字,但它说的是“整数常量对于”long“类型来说太大了”,我尝试用C ++和Processing(类似于Java)。 发生了什么,我应该用它做什么? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM