Archive for the ‘Windows Phone/C#’ Category.

Windows Phone开发 自定义控件ImageButton的实现

在Windows Phone中,默认的按钮Button控件并没有设置成图片样式的功能,如果在Background属性设置一张图片,再隐藏边框,虽然在外观上看就是一图片按钮,但是如果点击的话,会发现图片看不到了,只有一个前景色的距形,与真正的ImageButton还有有区别的。如果直接用图片,不用Button的话,会发现Image控件没有Click属性。
我们今天的目标:定制一个控件,有Button的功能,Image的外观。
简单说一下实现步骤,先是定义一个继承自Button的ImageButton控件,增加ImageSource属性,用于设置图片,然后用Expression Blend给这个控件定义外观。 Continue reading “Windows Phone开发 自定义控件ImageButton的实现” »

Windows Phone开发 文本输入框TextBox的提示功能

在其他手机系统中,文本输入框都有个Hint属性,在未输入文本的时候,用灰色文字提示用户,但是在Windows Phone中,默认的TextBox是没有这个功能的(Windows Phone好像就是个半成品),如果需要使用此功能,就需要Silverlight for Windows Phone Toolkit中的PhoneTextBox。 Continue reading “Windows Phone开发 文本输入框TextBox的提示功能” »

Windows Phone开发 自定义ApplicationBar图标不显示,只显示叉的解决

默认情况下,直接把图片拖进项目,图片的生成操作是Resources,需要改成内容(Content).选中图片,在属性面板中修改。

Windows Phone开发 BackgroundWorker的使用,后台执行代码

BackgroundWorker功能类似于多线程,可以执行耗时操作而不影响UI,用法类似于WebClient,以事件的形式与UI线程通讯,如进度改变,执行完毕。BackgroundWorker还可以在执行过程中取消。范例效果图:

代码: Continue reading “Windows Phone开发 BackgroundWorker的使用,后台执行代码” »

C# 获取UNIX时间戳

相当于Java中System.currentTimeMillis(),精确到毫秒


            DateTime Epoch = new DateTime (1970, 1, 1);
            Console.WriteLine((long)(DateTime.UtcNow - Epoch).TotalMilliseconds);

Windows Phone开发 WebClient同步下载的实现(AutoResetEvent)

很多组件在Windows Phone中都缩水,比如WebClient类,只有异步下载功能,没同步下载功能.貌似Windows Phone中大多数跟网络相关的功能都默认异步,这样有个好处,比如在显示一张网络图片,不需要像Android中一样新开线程下载图片了,直接把Source设置成图片URL即可.但是没有同步下载功能,很多时候会很麻烦,比如说我们下载后要对数据进行处理,但是如果异步下载的话,下载好的数据只有在WebClient下载完调用的方法中才能得到,这样就需要把参数传递给下载完成的函数,比较麻烦.
同步下载原理:其实还是异步下载,只是使用了AutoResetEvent,让线程在开始下载的时候等待,下载完成事件里,通知原来的线程继续执行. Continue reading “Windows Phone开发 WebClient同步下载的实现(AutoResetEvent)” »

SQL Server does not handle comparison of NText, Text, Xml, or Image data types.解决方法

当表中包含有NText,Text,Xml,Image的列时,使用DataContext.SubmitChanges() ,只要修改或者删除,都会报SQL Server does not handle comparison of NText, Text, Xml, or Image data types,这是因为Linq会比例所有的列.解决方法:给主键加上IsVersion=true属性.

Windows Phone开发 ListBox中Item内控件获取整个Item对象的方法

我在我的ListBox的Item里加了一个按钮,点击按钮可以删除该项,费了很长时间,终于在一国外论坛上找到解决方法.
在Button的click事件中,Button的DataContext属性就是这个Item对象,简单地转换成绑定的ItemsSource的对象就可以.


        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            Button button = sender as Button;
            VideoItem item = button.DataContext as VideoItem;
            System.Diagnostics.Debug.WriteLine("删除"+item.Title);
        }