• Windows Phone 7(WP7)开发 PhoneTextBox的一个BUG需要注意


    作为Toolkit的控件之一的PhoneTextBox控件是我非常喜欢用的一个小东西,原因很简单,它自带一个默认的提示,当用户没有输入即Text的值为String.Empty的时候,这个提示就会出现,而且颜色还很浅,而当用户输入任何内容之后,提示就会隐藏,这种操作方式很适合放在手机这种屏幕不大的设备上,很省地方,比那种一个TextBlock加一个TextBox的方式明显舒服很多。

    但是前两天测试发现一个问题,应用中有一个PhoneTextBox用来显示用户的地理位置,在GPS工作正常的情况下,它的Text值默认绑定成为GPS获取坐标之后解析出来的地址,而如果GPS工作不正常的时候,Hint的值显示“GPS异常,请手动输入您当前的地址”。这样的设置再正常不过了,不是么。

    但是问题出现啦,具体复现:在启动应用程序之前,在手机的设置里把GPS关闭,启动应用程序,PhoneTextBox正常提示“GPS异常,请手动输入您当前的地址”,按开始键返回主页面,再进入手机设置开启GPS,然后不断的按后退键返回刚才的应用程序,我的GPS数据获取是在Loaded事件里有一次,之后就只能手动按钮刷新了,显然此时GPS没有再次自动刷新,然后我进入有手动按钮刷新的那个页面(和PhoneTextBox不在同一个页面),手动刷新GPS坐标,GPS坐标和位置解析正常之后,按后退键返回有PhoneTextBox的那个主页面,这个时候,问题出现啦:Hint提示的字符串和Text显示的地理位置共同出现在了PhoneTextBox里,两个字符串交叠在这里,异常难受。

    这是一个BUG,简单分析是由于把PhoneTextBox的Text值进行了双向绑定,在另一个页面里刷新GPS数据之后,PhoneTextBox的Text值相应的发生了改变,但由于PhoneTextBox这个页面并未处于激活状态,所以PhoneTextBox的Hint的显示没有消失。

    发现这个问题之后,我试图手动监测PhoneTextBox的Text变化然后控制Hint的隐藏,但是发现这不是一个好办法。后来,干脆把GPS获取的默认的地理位置也绑定到了Hint里,并做了一个Converter如下:

     public class NowAddressConverter : IValueConverter
        {
    
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                string result = value.ToString();
                if (result == "")
                {
                    return "GPS异常,请手动输入您当前的地址";
                }
                else
                {
                    string str = @"当前地址:";
                    if (value.ToString().StartsWith(str))
                        result = value.ToString();
                    else
                    {
                        result = str + value;
                    }
    
                }
    
                return result;
            }
    
            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                return "";
            }
    }

    这样就把GPS的数据和默认的提示都放在了Hint属性里,从而绕过了上面提到的那个Bug,这只能算是一个临时的解决办法吧。

    (备注:我目前使用的Toolkit是2011.11月的最新版本,由NuGet下载)

     

  • 相关阅读:
    如何理解Stand SPI Dual SPI 和Quad SPI??
    一款很实用的欠压过压保护电路
    AbpZero之企业微信登录(拓展第三方auth授权登录)第三步:需要注意事项
    在AbpZero中hangfire后台作业的使用——开启hangfire
    AbpZero之企业微信登录(拓展第三方auth授权登录)第一步:查看AbpZero的auth第三方登录的底层机制
    在AbpZero中hangfire后台作业的使用——hangfire的调度
    AbpZero后台模块化(1)
    AbpZero之企业微信登录(拓展第三方auth授权登录)第二步:开始逐步实现企业微信登录
    vue基础(入门视频零基础精华总结)
    组件参数校验与非props特性
  • 原文地址:https://www.cnblogs.com/vistach/p/Windows_Phone_WP7_PhoneTextBox_Hint_Text_Bug.html
Copyright © 2020-2023  润新知