WP7开发中使用自定义的弹出窗口
来源:互联网 发布:ubuntu 16.04分区 编辑:程序博客网 时间:2024/06/14 07:57
关键词:WP7开发;自定义控件;自定义窗口;MessagePrompt
今天与大家分享一下WP7开发中如何使用自定义的弹出窗口,为MessageBox寻找一种替代方案。
两种方法:
1. 使用Coding4Fun提供的MessagePrompt(本人比较推荐这种方法);
2. 自定义UserControl,自己设计窗口布局。
本人在上述两种方案中间选择了前者作为MessageBox的替换方案,原因是简单,可定制性也比较强,可以很容易地将MessageBox替换为MessagePrompt.下面详细讲述。
1. 使用Coding4Fun提供的MessagePrompt
先决条件:下载Coding4Fun并添加对Coding4Fun.Toolkit.Controls的引用,如下图所示。(如果不知道怎么做,可随意参考一篇网上的教程,类似的教程非常多。)
下载地址:http://coding4fun.codeplex.com/
下面讲述MessagePrompt的使用方法。
必要的命名空间:
using Coding4Fun.Toolkit.Controls;
在你需要的地方,或者原先工程代码中有MessageBox的地方,参考如下代码段使用MessagePrompt:
private void button_Click(object sender, RoutedEventArgs e) //新建 { var MymsgPrompt = new MessagePrompt { Title = "Notice", //标题 Body = new TextBlock //body,可定制性非常强,可以设置文字颜色,大小,换行方式等等 { Text = "I'm MessagePrompt ^_^", Foreground = new SolidColorBrush(Colors.White), FontSize = 25, TextWrapping = TextWrapping.Wrap }, Background = new SolidColorBrush(Colors.Purple), //消息框的背景色 HorizontalAlignment = System.Windows.HorizontalAlignment.Center, //对齐方式 Width = 500, //消息框的宽度 IsAppBarVisible = true, //true表示保留OK按钮,没有这个语句,OK按钮也是会默认保留的 IsCancelVisible = true //true表示保留Cancel按钮 }; MymsgPrompt.Completed += stringObject_Completed; //该函数用来处理用户点击OK按钮或Cancel按钮的事件 MymsgPrompt.Show(); //显示如上样式的MessagePrompt }
void stringObject_Completed(object sender, PopUpEventArgs<string, PopUpResult> e) { if (e.PopUpResult == PopUpResult.Ok) { //用户点击OK按钮时要进行的事情 } else if (e.PopUpResult == PopUpResult.Cancelled) { //用户点击Cancel按钮时要进行的事情 } }
看看效果图吧!怎么样,是不是比MessageBox漂亮了许多,此外,这个窗口在出现和消失的时候还带有动画效果哦!
上面是通过使用Coding4Fun中提供的MessagePrompt实现自定义弹出窗口。使用起来非常非常简单,在任何想用的地方将上述代码段贴过去,按照自己的喜好修改一下即可!
还有一种通过自定义控件实现自定义弹出窗口的方法。下面借着网上的一篇博文进行补充讲述,这个博文我刚开始看的时候,最大的感触是:讲的不够清楚。后来经过摸索才发现是怎么回事。如果原文作者认为我直接借着您的文章进行发挥不太妥,请通知我,我会即刻进行处理。
2. 自定义UserControl,自己设计窗口布局
原博文的链接地址:http://www.cnblogs.com/linzheng/archive/2012/03/20/2409071.html
首先要感谢原文作者加菲猫的分享,让我最终学习了这种实现方法。
但是原文中有些地方讲述的不清楚,导致一些读者看了之后,反映说是照着博主的代码做会报错。下面我讲述一下如何使用博主提供的代码。
(1)如何建立工程
大家可以看到上述链接中的文章所显示的图片中有2个项目,其中一个是Windows Phone应用程序项目,一个是Windows Phone类库项目。大家在新建项目的时候,可以先建立应用程序项目TestMessageControl,然后在解决方案资源管理器中,右键点击,并选择“添加”--->"新建项目",再选择新建Windows Phone类库项目即可,如下图所示。至此,两个项目就建立好了。按照原博文把代码贴进去。注意:Themes下面的Generic.xaml.cs是空白的。
2. 设置项目的依赖关系
很多读者表示,按照原博文的代码去做,会有“找不到这,找不到那”的报错。原因在于:还需要在TestMessageControl中添加对MessageControl的引用。具体做法如下:
如上图所示,右击“解决方案”,在菜单中选择“项目依赖项”,在弹出的“项目依赖项”窗口中按下图进行设置,即:项目TestMessageControl要依赖于MessageControl。
接着,在项目TestMessageControl下的“引用”一项上点击鼠标右键,选择“添加引用”,并在弹出的“添加引用”窗口中点击“项目”选项卡,选择MessageControl,确定!
如果你完成了如上步骤,再去运行原博文的代码,你会发现所有的报错都木有了!
后记:
对比上述两种方法,我更喜欢第一种。因为简单,所以喜欢^_^
事实上,在实践第二种方法的过程中,我遇到2个很困惑的问题:
问题一:当用户点击自定义窗口中的“是”或者“OK”按钮的时候,应该如何处理该事件?
因为对这个事件的处理是放在用户自定义控件页面对应的代码文件WindowsPhoneControl1.xaml.cs中的,显然在这个地方是无法处理使用了自定义窗口的页面上的event的。
问题二:每个自定义弹出窗口上只能显示特定的提示字符串,如果我需要多个弹出窗口且要显示不同的字符串,我应该如何操作?
显然,对每一种窗口单独进行一次定制,这样的方法可行,但是不符合工程规范。有没有更有效的办法呢?
上述两个问题,如果亲爱的读者您懂得,希望不吝告之,先谢过了!
- WP7开发中使用自定义的弹出窗口
- WP7弹出控件的使用
- WP7开发中Coding4Fun的五种弹出框介绍
- DridView中 弹出自定义的详细窗口
- 自定义的div弹出窗口
- Flex 自定义组件 -- 弹出窗口 [PopUpManager TitleWindow 组件]的使用
- Flex 自定义组件 -- 弹出窗口 [PopUpManager TitleWindow 组件]的使用
- Android PopupWindow的使用技巧 Android上自定义弹出窗口
- 弹出窗口的使用
- wp7 中的弹出窗口类似childwindow
- flex4 中创建自定义弹出窗口
- WP7中使用自定义的HtmlTextBoxControl使丰富的文字显示更方便
- WP7中图像控件的使用
- IE8中怎样使用脚本隐藏弹出窗口的地址栏
- 弹出窗口zDialog的使用
- ymPrompt 自定义关闭弹出的子窗口
- 自定义spinner的下拉弹出窗口样式
- 快速弹出窗口的(二):自定义toast
- 复制对象
- java第六章
- 结构体中定义函数指针
- ffmpeg,H264库编译后的Demo工程所需操作的步骤
- C++发送邮件和附件
- WP7开发中使用自定义的弹出窗口
- Windows核心编程学习九:利用内核对象进行线程同步
- iOS - .pch文件的使用
- redhat虚拟机安装后设置
- Linux 套接字编程中的 5 个隐患
- 编程杂谈
- MyEclipse使用Java 通过JDBC连接MySQL数据库的基本测试
- 二分答案 模板
- 初识block