惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 叶小钗
J
Java Code Geeks
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
阮一峰的网络日志
阮一峰的网络日志
爱范儿
爱范儿
量子位
N
Netflix TechBlog - Medium
博客园 - 聂微东
博客园 - Franky
aimingoo的专栏
aimingoo的专栏
The Cloudflare Blog
T
The Blog of Author Tim Ferriss
MyScale Blog
MyScale Blog
Google DeepMind News
Google DeepMind News
小众软件
小众软件
博客园 - 三生石上(FineUI控件)
C
Check Point Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
B
Blog
Engineering at Meta
Engineering at Meta
Microsoft Azure Blog
Microsoft Azure Blog
博客园_首页
H
Hackread – Cybersecurity News, Data Breaches, AI and More
腾讯CDC

博客园 - MainTao

WebStorm 自定义字体+颜色+语法高亮+导入导出用户设置 WebStorm安装Vim以及快捷键设置 scroll clock–jQuery widget implement 基于iScroll 的开发(不断补充) C#操作Win7/Win8的库、收藏夹 P/Invoke Interop 实例 WP7图片从独立存储绑定 编写jQueryUI插件(widget) 调试Javascript Windows Phone 7监测网络环境变化 Blend制作动画 用OpacityMask快速制作theme friendly UI 用gradient brush和OpacityMask实现fade edge效果 blend 画图 ControlTemplate & DataTemplate PhoneApplicationFrame以及设置Obscured/Unobscured的event handler Windows Phone 7 短信表情 WP7应用程序生命周期,以及各个event handler分别该做什么 XAML中的空格、换行、Tab
第一个WP7程序 开发总结
MainTao · 2011-11-22 · via 博客园 - MainTao

终于做完了一个完整的应用,code name叫Whisper,以后有机会发到marketplace上。

先不说这个应用是干什么的了,把开发过程中突破的技术问题总结一下。

难题1:Listbox控件自动回弹无法停留,看不到最底下的items

原因:这是因为把Listbox放在了StackPanel布局下,因为StackPanel是动态的,不知道自己占多大空间。而Listbox使用数据绑定时也不知道自己占多大空间。他俩都不知道,于是就导致了这个悲剧。

解决:把StackPanel换成Grid,让Grid的Height属性="*"

难题2:ContextMenu用了数据绑定后,ContextMenuItem中原本可以显示的图片无法显示

原因:和ApplicationBar里的按钮图片无法显示的原因一样,微软真是应该解决这个问题,至少把图片的默认BuildAction改成Content。

解决:把BuildAction改成Content就好了。

难题3:实现了INotifyPropertyChanged接口,但绑定目标的数据未更新

原因:调式发现PropertyChanged事件的值为null,因此不会走下面通知属性变化的流程。

解决:一开始是在页面构造函数里给DataContext赋值的,后来放到页面的Load事件处理函数中,问题解决。

难题4:TextBox中文字透明度渐变不能及时响应

原因:如果你改了TextBox的文字,会实时响应,但如果是Foreground.Opacity属性,则要等到再有TextBox控件获得焦点后才会响应。

解决:让TextBox控件获得焦点,透明度渐变就会开始。但是这样会使得SIP(Soft Input Panel)弹出来,即便你立刻再把Focus移到别的控件上,SIP也会闪一下,影响体验。

解决:让TextBox.IsReadOnly=true,就不会弹出SIP了。只要以下三行代码:

textBox1.IsReadOnly=true;

textBox1.Focus();

textBox1.IsReadOnly=false;

难题5:TextBox的滚动条失效

原因:这应该是微软的一个设计缺陷。

解决:那么在需要编辑长文本时怎么办呢。另一个缺陷也不得不提,就是RichTextBox的IsReadOnly不能设置为true,否则会在运行时解析XAML失败。或换用webbrower打开一个自制的内嵌input的页面,这种做法太费周折。

最终也没有完美解决。给TextBox外层套一个ScrollViewer,但滑动后会弹回到输入光标所在的位置,即还原到滑动之前的视图。网上说如果是TextBlock的话,给TextBlock外层套上一个Grid就行了。<ScrollViewer><Grid><TextBlock/></Grid></ScrollViewer>,但是TextBox试过不成功。哪位高人知道多谢指点。不过也由此可见,在移动应用上还是不要让用户输入太多文字。

难题6:在TextBox中输入英文没有单词自动提示

原因:没有设置InputScope属性。但奇怪的是中文是有词提示的。

解决:将InputScope属性设为Text。