Posts tagged ‘Windows Phone’

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开发 BackgroundWorker的使用,后台执行代码

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

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

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

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

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);
        }

Windows Phone开发 TextBox的回车事件 关闭软键盘

单行的TextBox,如果用户按回车键,说明输入已经完成,但Windows Phone并不会自动隐藏软键盘盘.单行的TextBox在按回车键后会触发TextInput事件,而TextBox在失去焦点后,软键盘就会隐藏,所以重写这个事件的方法,把焦点转移到其他控件上即可:


        private void textBox1_TextInput(object sender, TextCompositionEventArgs e)
        {
            System.Diagnostics.Debug.WriteLine(textBox1.Text);
            this.Focus();
            //转移焦点到整个页面,TextBox失去焦点后,就会隐藏软键盘
        }

Windows Phone开发 无法更新ListBox数据的解决

我的ListBox,原来是绑定List的,发现即使更新了List的元素,列表也不会更新,改用 ObservableCollection后解决.
代码如下: Continue reading ‘Windows Phone开发 无法更新ListBox数据的解决’ »