跌跌撞撞的Win8 Metro style App开发
tianmuxia
这个作者很懒,什么都没留下…
展开
-
控件篇 - 模态化的Popup控件实现
对于模态化的对话框,我们知道MessageDialog,但是它过于简陋,只能简单显示文字信息,不能自定义UI。现实是我们的需求总是要求这个对话框能够自定义,这时候自然就想到了Popup控件。Popup控件有一个很严重的问题,就是它没有属性指定它是模态化还是非模态化,也许以前有,精简到Metro就没有了……现在我们的Popup是非模态的,也就Popup弹出来之后后面的页面还是可以操作,而原创 2012-08-24 14:37:54 · 3035 阅读 · 0 评论 -
WP8程序生命周期之快速恢复
先简述快速恢复的过程:当程序前台运行过程中,我们按窗口键会把程序切换到后台。这时候,wp8默认的快速恢复方法是长按后退键,而我们再点击ShellTile或主程序磁贴或程序列表图标运行程序时...原创 2013-02-27 16:16:17 · 2964 阅读 · 1 评论 -
WP8自定义控件之实现DataTemplate和绑定
下面我来自定义类似系统ListBox的MyListBox控件,里面包含模版属性ItemTeamplate。1、添加新类MyListBox.cs,让它继承自Grid:[TemplatePart(Name = "ItemTemplate", Type = typeof(UIElement))]public class MyListBox : Grid2、添加ItemTemplate模原创 2013-03-01 10:26:15 · 3283 阅读 · 0 评论 -
wp8里监听控件自带属性的变化
在wpf里,有DependencyPropertyDescriptor类可以轻松实现监听控件自带属性的变化,如下:DependencyPropertyDescriptor dpd = DependencyPropertyDescriptor.FromProperty(TextBlock.FontSizeProperty, typeof(TextBlock));if (dpd != nul原创 2013-03-13 09:01:20 · 2160 阅读 · 0 评论 -
WP8为LongListSelector添加类似ListBox的点击凹陷效果
我们知道WP8上的开发推荐使用LongListSelector代替ListBox,它的效率要比ListBox高。但是LongListSelector并没有ListBox的点击凹陷效果,而且VisualStateGroups里也没有对应的VisualState提供给我们直接修改,所以要想实现该点击凹陷效果只能想其它办法了。以下是个人研究的一种方法:1.新建一个UserControl,原创 2013-02-26 15:03:46 · 2698 阅读 · 1 评论 -
WP8,最后,怎么在属性变化时重新选择ItemTemplate呢?
根据前两篇文章,StockItem元素的DisplayType变更时会通知UI,而我们的ItemTemplate是根据DisplayType来选择的,那么DisplayType变更时怎么让LongListSelector重新选择ItemTemplate呢?方法是我们在代码里更改DisplayType属性的时候,用VisualTreeHelper获取StockItem元素的ContentPres原创 2013-01-23 17:26:00 · 962 阅读 · 0 评论 -
WP8为LongListSelector根据Item内容选择ItemTemplate
我们知道Win8里要使ListView根据Item内容选择DataTemplate时,可以使用DataTemplateSelector类,但WP8里没有这个类可用。所以,首先我们模仿实现一个DataTemplateSelector:public abstract class DataTemplateSelector : ContentControl { //根据newConten原创 2013-01-23 17:19:04 · 3166 阅读 · 0 评论 -
WP8的绑定属性变化时通知UI
我们知道在使用ObservableCollection作为LongListSelector的ItemsSource时,当源集合发生新增或删除元素时,会即时通知到UI作出更新。但是当只是修改源集合里元素的属性值时,却不会通知UI更新。为了使属性变化能够通知UI,需要为源集合的元素类实现INotifyPropertyChanged接口。首先我们抽象一个实现INotifyPropertyCh原创 2013-01-23 17:09:15 · 1700 阅读 · 0 评论 -
把Thrift框架移植到Metro App
前面介绍了thrift框架的基本使用,看到了它的强大功能。我们很自然的希望把它在Metro app上也能使用,好,直接添加库和src到Metro工程里,编译,错误,不认识[Serializable],注释掉(src里包含了序列化的方法),再编译,通过了。运行,不行,通讯没响应。之前我们说过Metro app是一个.net framework的精简版,原因就在这里,编译thrift库的源文件原创 2012-09-05 16:58:03 · 1735 阅读 · 0 评论 -
控件篇 - TextBox的GotFocus事件触发问题
如果你遇到以下问题:随便点击一个应用程序区域,点击处明明不在TextBox里,却触发了它的GotFocus事件。那么,很可能是你在最外层包了一个ScrollViewer,它导致了这个事件的诡异触发。 所以,最直接的解决办法是把这个ScrollViewer去掉;如果确实不能去掉怎么办,暂时未知。。。原创 2012-08-24 14:11:19 · 5929 阅读 · 0 评论 -
控件篇 - 子控件在StackPanel里的居中问题
如下面代码: 原意是想通过HorizontalAlignment和VerticalAlignment属性把TextBlock在StackPanel里水平和垂直都居中,但实际效果如下:水平是居中了,垂直却没有。原因是StackPanel默认的Orientation是Vertical,这种情况下只能设置水平方向的对齐属性;当StackPanel的Orienta原创 2012-08-24 13:29:23 · 15761 阅读 · 0 评论 -
Windows8 Metro style app开发前瞻
Windows8 RTM版已在8月2号发布,可以到以下Windows开发中心下载:http://msdn.microsoft.com/zh-CN/windows/apps/br229516.aspx 要开发Metro style app,你必须在Windows8上安装Visual Studio 2012,上面链接也有下载。其他系统安装的VS2012将不能建Metro style a原创 2012-08-24 12:28:25 · 1893 阅读 · 2 评论 -
LongListSelector的Item里使用Image加载网络图片必须注意的问题
当一个列表的Item数很多时,为了效率与节省资源,我们不得不使用LongListSelector,它只保存了当前可见Item数的UI内存,当列表滑动时,比如Item1的位置滑动后显示的是Item10,它直接把Item1对应UI控件的DataContext从Item1直接变成tem10,也就是说UI控件依然是Item1的UI控件,避免了重新创建UI控件的资源开销。假如ItemTemplate里用原创 2014-01-03 15:55:27 · 2075 阅读 · 0 评论