热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

WP7开发简单记事本的实现

PS:本文不是介绍WP高技术含量的文章,只是通过一个小例子,捎带介绍下WP的基础知识,大神和WP高手请绕行。最近自己在学习W

PS:本文不是介绍WP高技术含量的文章,只是通过一个小例子,捎带介绍下WP的基础知识,大神和WP高手请绕行。

  最近自己在学习WP7开发,看过园子里好多强人的文章,受益匪浅。当然,学习嘛还是要自己动手,自己就做了一个小小的Demo(记事本应用),该应用主要实现记录用户输入的信息,可以保存到文件中,再次进入时可以看到之前记录的信息,该程序很简单,但是涉及到很多需要注意的知识,希望对你有所帮助!

  该应用用到的技术主要有:隔离存储、ApplicationBar、文本控件的一些属性等!

  实现思想:1、主界面定义一个Textbox控件和一个TextBlock控件,2个控件充满Grid,初始状态Textbox控件隐藏,TextBlock显示;

       2、单击ApplicationBar的Edit按钮,Textbox显示并处于选中状态,TextBlock隐藏;

       3、在TextBox输入一些文本内容,点击ApplicationBar的Save,控件状态Textbox控件隐藏,TextBlock显示,并将Textbox值赋给TextBlock显示;

       4、退出应用程序,或者切换应用程序重新回到该页面,显示之前存储的信息;

         5、单击ApplicationBar的Delete删除文件,再次进入该不会显示之前存储的信息。

  没做过美工,界面没怎么设计,o(∩_∩)o...应用界面如下:

  下面给出详细的设计过程,以及设计过程中需要注意的问题:

  1:首先创建一个WP项目(Windows Phone应用程序);

  2:修改主界面标题,以便给界面起个合适的名字,主要是2个TextBlock的Text属性,代码如下:

"TitlePanel" Grid.Row="0" Margin="12,17,0,28">"ApplicationTitle" Text="我的Demo" Style="{StaticResource PhoneTextNormalStyle}"/>"PageTitle" Text="记事本小程序" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>

  3:在主界面添加2个控件Textbox和TextBlock,注意使2个控件填充整个Grid的方式,我用的是设置 VerticalAlignment="Stretch"和HorizontalAlignment="Stretch",表示控件是从四个边缘向中间Margin的,此时不设置Margin属性即可。 同时设置控件显示和隐藏的属性是Visibility="Visible"和Visibility="Collapsed",还有设置Textbox输入文本自动换行属性TextWrapping="Wrap",Textbox控件按回车(Enter)键换行的属性AcceptsReturn="True",代码如下:

"myTextBox"VerticalAlignment="Stretch"HorizontalAlignment="Stretch"Visibility="Collapsed"Text=""TextWrapping="Wrap"AcceptsReturn="True" />"myTextBlock"VerticalAlignment="Stretch"HorizontalAlignment="Stretch"Visibility="Visible"Text=""TextWrapping="Wrap"/>

  4:添加3个图片到项目中,以便在ApplicationBar显示,右键项目--->添加文件夹--->重命名为Images--->到C:\Program Files\Microsoft SDKs\Windows Phone\v7.1\Icons\dark目录下找到需要的图片粘贴到项目的Images文件夹下。注意:要设置3个图片的属性生成操作为内容,否则在ApplicationBar一直显示的是XX,而不是设置的图片。

  5:把项目自动生成的ApplicationBar代码的注释去掉,修改为如下代码(其中IconUri="/Images/appbar.save.rest.png"属性设置ApplicationBar的显示图像的路径):

"True" IsMenuEnabled="True">"/Images/appbar.edit.rest.png" Text="编辑" Click="ApplicationBarEdit_Click"/>"/Images/appbar.save.rest.png" Text="保存" Click="ApplicationBarSave_Click"/>"/Images/appbar.delete.rest.png" Text="删除" Click="ApplicationBarDel_Click"/>

  6:到现在前台页面已设置完毕,下面开始写后台代码。考虑到进入该页面时需要加载手机内存的信息,故添加PhoneApplicationPage_Loaded事件加载数据,此时整体考虑该页面,有3个Click事件和一个Load事件。在这里我写2个辅助方法来处理隔离存储的保存和加载数据:注意SaveData方法的using (var fileStream = storage.OpenFile(fileName, FileMode.Create))句,要定义FileMode类型为Create,因为在记事本有信息时,重新保存需要把之前文件里的数据清除,这时才保证文件是最近编辑的信息。这里不太好表达,你可以试试非Create的情况。

private string fileName = "myFile.txt";private void SaveData(){IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication();using (var fileStream = storage.OpenFile(fileName, FileMode.Create)){using (var sr = new StreamWriter(fileStream)){sr.WriteLine(myTextBox.Text);}}}private void LoadData(){IsolatedStorageFile appstorage = IsolatedStorageFile.GetUserStoreForApplication();using (var fileStream = appstorage.OpenFile(fileName, FileMode.OpenOrCreate)){using (var sr = new StreamReader(fileStream)){myTextBlock.Text = sr.ReadToEnd();}}}

  7:添加Edit事件:注意这里先判断了当前页面的状态,如果处于非编辑状态才会执行

private void ApplicationBarEdit_Click(object sender, EventArgs e){if (myTextBlock.Visibility == Visibility.Visible){myTextBox.Text = myTextBlock.Text;myTextBox.Visibility = Visibility.Visible;myTextBlock.Visibility = Visibility.Collapsed;myTextBox.Focus();}}

  8:添加Save事件:

private void ApplicationBarSave_Click(object sender, EventArgs e){if (myTextBox.Visibility == Visibility.Visible){SaveData();myTextBlock.Text = myTextBox.Text;myTextBlock.Visibility = Visibility.Visible;myTextBox.Visibility = Visibility.Collapsed;}}

  9:添加Delete事件:

private void ApplicationBarDel_Click(object sender, EventArgs e){if (myTextBlock.Visibility == Visibility.Visible){myTextBox.Text = "";SaveData();myTextBlock.Text = "";myTextBlock.Visibility = Visibility.Visible;myTextBox.Visibility = Visibility.Collapsed;}}

至此,该记事本小应用就算完成,里面还有很多细节没有提到,望读者自己挖掘!

 

 

转:https://www.cnblogs.com/PaulMa/archive/2012/05/25/2518265.html



推荐阅读
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • Python 序列图分割与可视化编程入门教程
    本文介绍了如何使用 Python 进行序列图的快速分割与可视化。通过一个实际案例,详细展示了从需求分析到代码实现的全过程。具体包括如何读取序列图数据、应用分割算法以及利用可视化库生成直观的图表,帮助非编程背景的用户也能轻松上手。 ... [详细]
  • 在使用 Qt 进行 YUV420 图像渲染时,由于 Qt 本身不支持直接绘制 YUV 数据,因此需要借助 QOpenGLWidget 和 OpenGL 技术来实现。通过继承 QOpenGLWidget 类并重写其绘图方法,可以利用 GPU 的高效渲染能力,实现高质量的 YUV420 图像显示。此外,这种方法还能显著提高图像处理的性能和流畅性。 ... [详细]
  • 本文介绍了如何利用ObjectMapper实现JSON与JavaBean之间的高效转换。ObjectMapper是Jackson库的核心组件,能够便捷地将Java对象序列化为JSON格式,并支持从JSON、XML以及文件等多种数据源反序列化为Java对象。此外,还探讨了在实际应用中如何优化转换性能,以提升系统整体效率。 ... [详细]
  • Java中不同类型的常量池(字符串常量池、Class常量池和运行时常量池)的对比与关联分析
    在研究Java虚拟机的过程中,笔者发现存在多种类型的常量池,包括字符串常量池、Class常量池和运行时常量池。通过查阅CSDN、博客园等相关资料,对这些常量池的特性、用途及其相互关系进行了详细探讨。本文将深入分析这三种常量池的差异与联系,帮助读者更好地理解Java虚拟机的内部机制。 ... [详细]
  • 深入解析C#中app.config文件的配置与修改方法
    在C#开发过程中,经常需要对系统的配置文件进行读写操作,如系统初始化参数的修改或运行时参数的更新。本文将详细介绍如何在C#中正确配置和修改app.config文件,包括其结构、常见用法以及最佳实践。此外,还将探讨exe.config文件的生成机制及其在不同环境下的应用,帮助开发者更好地管理和维护应用程序的配置信息。 ... [详细]
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
  • 该大学网站采用PHP和MySQL技术,在校内可免费访问某些外部收费资料数据库。为了方便学生校外访问,建议通过学校账号登录实现免费访问。具体方案可包括利用学校服务器作为代理,结合身份验证机制,确保合法用户在校外也能享受免费资源。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 在C++程序中,文档A的每一行包含一个结构体数据,其中某些字段可能包含不同数量的数字。需要将这些结构体数据逐行读取并存储到向量中,随后不仅在控制台上显示,还要输出到新创建的文档B中。希望得到指导,感谢! ... [详细]
  • 深入探索HTTP协议的学习与实践
    在初次访问某个网站时,由于本地没有缓存,服务器会返回一个200状态码的响应,并在响应头中设置Etag和Last-Modified等缓存控制字段。这些字段用于后续请求时验证资源是否已更新,从而提高页面加载速度和减少带宽消耗。本文将深入探讨HTTP缓存机制及其在实际应用中的优化策略,帮助读者更好地理解和运用HTTP协议。 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • 优化后的标题:数据网格视图(DataGridView)在应用程序中的高效应用与优化策略
    在应用程序中,数据网格视图(DataGridView)的高效应用与优化策略至关重要。本文探讨了多种优化方法,包括但不限于:1)通过合理的数据绑定提升性能;2)利用虚拟模式处理大量数据,减少内存占用;3)在格式化单元格内容时,推荐使用CellParsing事件,以确保数据的准确性和一致性。此外,还介绍了如何通过自定义列类型和优化渲染过程,进一步提升用户体验和系统响应速度。 ... [详细]
author-avatar
mobiledu2502927397
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有