zoukankan      html  css  js  c++  java
  • 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下载)

     

  • 相关阅读:
    字典
    字符串常用的方法
    切片,集合、文件处理
    蓝桥杯练习 Day6 题解
    spoj-ORDERS
    spoj-SUBSUMS
    spoj
    spoj --- ABCDEF
    C. Andryusha and Colored Balloons
    B. The Meeting Place Cannot Be Changed
  • 原文地址:https://www.cnblogs.com/vistach/p/Windows_Phone_WP7_PhoneTextBox_Hint_Text_Bug.html
Copyright © 2011-2022 走看看