c#学习之windows phone 以及windows app的开发

两周的实验展示课已经结束了,看到别人的各种高大上的应用和使用各种游戏引擎的游戏,感觉都好高级。比较之下,感觉自己做的记事本和账单的结合的一个应用有一点low。但是毕竟是自己通过查阅各种网上资料和书本做出来的。还是,应该高兴一小下吧。

下面说一下windows phone 和windows app的开发过程中遇到的问题。

最主要的是刚开始对文件的存储不知道用什么方法去储存。起初,从网上找到了一些资料,上面写道使用var appStorage = IsolatedStorageFile.GetUserStoreForApplication();

这种方法存储,当点击确定按钮是就开始存储。代码如下:

  private void quedingbutton_Click(object sender, RoutedEventArgs e)
        {
            var appStorage = IsolatedStorageFile.GetUserStoreForApplication();

            //构建文件全名,文件名称由时间和文件名组成.txt.
            StringBuilder filename = new StringBuilder();
            var data = dataPicker1.ValueString;//获取到用户创建事件时填写的时间  

            filename.Append(data);
            filename.Append("_");
            var data2 = timerPick1.ValueString;//
            filename.Append(data2);
            filename.Append("_");
            filename.Append(filenametextbox.Text.ToString());   //获取到用户创建事件时填写的事件的名称
            filename.Append(".txt");
            string mycfilename = filename.ToString();
            //创建文件,并向文件中填写内容,创建文件名中不能含有/或者:,否则创建失败
            string mycfilename1 = mycfilename.Replace("/", "_");
            string mycfilename2 = mycfilename1.Replace(":", "_");
            try
            {
                if (!appStorage.FileExists(mycfilename2))
                {
                    using (var file = appStorage.CreateFile(mycfilename2))
                    {
                        using (var writer = new StreamWriter(file))
                        {
                            writer.WriteLine(this.filecontent.Text);
                        }
                    }
                }
                else
                {
                    IsolatedStorageFileStream stream = appStorage.OpenFile(mycfilename2, FileMode.Open);
                    using (StreamWriter writer= new StreamWriter(stream))
                    {
                        //向文件中写入内容
                        //filecontent.Text = reader.ReadLine();
                        writer.WriteLine(filecontent.Text);
                        writer.Close();
                    }

但是这是在windows phone7中使用的,在windows phone和windowsapp中根本没法使用。

之后也想过使用数据库来存储(因为正在学习数据库),但是最后还是不知道什么原因的放弃掉了。最后,通过继续查阅资料。最终还是决定使用xml来存储文件。

使用方法如下:

  private async void quedingbtn_Click(object sender, RoutedEventArgs e)
        {
            StorageFolder storage = await ApplicationData.Current.LocalFolder.GetFolderAsync("MyList");
            XmlDocument _doc = new XmlDocument();
            if (mingcheng.Text == string.Empty || jiage.Text == string.Empty || shuliang.Text == string.Empty)
            {
                await new MessageDialog("请输入").ShowAsync();
            }

            else
            {
                XmlElement _item = _doc.CreateElement(mingcheng.Text);
                _item.SetAttribute("mingcheng", mingcheng.Text);
                _item.SetAttribute("shuliang", shuliang.Text);
                _item.SetAttribute("jiage", jiage.Text);

                _doc.AppendChild(_item);
                StorageFile file2 = await storage.CreateFileAsync(mingcheng.Text + ".xml", CreationCollisionOption.ReplaceExisting);
                await _doc.SaveToFileAsync(file2);
                Frame.Navigate(typeof(MainPage2), file2);
            }

不过xml还是有一个恒大的缺点就是当数据量很大时,非常低效,非常。不过我想对于这个应用应该还是足够的。

数据的绑定,使用binding和自己写的类中的属性来绑定

eg::

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0" Background="#FFF9F970 ">
            <ListBox Name="shijianlistbox"   HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
                     SelectionChanged="shijianlistbox_SelectionChanged">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <!--<Button  Name="shijianButton"
                                             FontSize="32"
                                             Foreground="Black"
                                             Content="{Binding filename}"  

                                     />-->
                            <TextBlock Name="shijiantextblock"  FontSize="32"
                                             Foreground="Black"
                                       Text="{Binding filename}"/>
                            <StackPanel Orientation="Horizontal">
                               <TextBlock Name="shijianneirong"
                                       Text="{Binding createdate}"
                                       Foreground="Black"
                                       Margin="10">
                                </TextBlock>
                                <TextBlock Name="noteDateCreated"

                                       Text="{Binding createdatatime}"
                                       Foreground="Black"
                                       Margin="10">
                                </TextBlock>
                            </StackPanel>

                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

使用绑定 Binding filename  、Binding createdate、  Binding createdatatime来使xaml中的控件textbox 或textblock中的text绑定。

最后说一下我自己感觉还不错的地方吧,这个界面就是一个textblock和几个按钮还有就是一个空的listbox,里面没有加任何其他的控件。向里面添加其他的内容比如说textblock和button都是在后面的控件的定义中实现的:

   async void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            list2.Items.Clear();
            StorageFolder storage = await ApplicationData.Current.LocalFolder.CreateFolderAsync("MyList", CreationCollisionOption.OpenIfExists);
            var files = await storage.GetFilesAsync();
            {
                foreach (StorageFile file in files)
                {
                    Grid a = new Grid();
                    ColumnDefinition col = new ColumnDefinition();
                    GridLength gl = new GridLength(600);
                    col.Width = gl;
                    a.ColumnDefinitions.Add(col);
                    ColumnDefinition col2 = new ColumnDefinition();
                    GridLength gl2 = new GridLength(200);
                    col2.Width = gl;
                    a.ColumnDefinitions.Add(col2);
                    TextBlock txbx = new TextBlock();
                    txbx.Text = file.DisplayName;
                    Grid.SetColumn(txbx, 0);
                    HyperlinkButton btn = new HyperlinkButton();
                    btn.Width = 200;
                    btn.Content = "查看详细";
                    btn.Name = file.DisplayName;
                    btn.Click += (s, ea) =>
                    {
                        Frame.Navigate(typeof(chakan2), file);
                    };
                    Grid.SetColumn(btn, 1);

                    a.Children.Add(txbx);
                    a.Children.Add(btn);

                    list2.Items.Add(a);
                }
            }
        }

感觉这样就可以轻松获取控件的内容,个人认为这样比在listBox中直接添加空间好的多。

时间: 2024-10-19 01:41:29

c#学习之windows phone 以及windows app的开发的相关文章

C#学习(九)之Windows Store App &amp; WP 开发小记(一)

由于课程已经讲述完毕,所以本次学习记录就讨论记录一下我在Windows Store App & WP开发中遇到的一些问题与收获. 一.数据库(Sqlite)的使用 虽然资料很难找,但sqlite在这两个平台的使用还是很简单的. 首先是环境配置阶段: 1.工具->拓展与更新->联机,然后在右上搜索sqlite,之后下载安装下图两个打勾的拓展包,注意要重启VS方才生效. 2.项目->管理NuGet程序包->联机,搜索sqlite,安装下图打勾内容,如果项目多出下图两个文件即安装

Ant学习-001-ant 基础知识及windows环境配置

一.Ant 概要基础知识 Apache Ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发,用以构建应用,或结合其他开源测试工具例如 git.TestNG等搭建持续集成测试开发环境,从而高效.高质量的构建产品. Ant 有以下一些优点: 跨平台,可移植.Ant 是 Java 语言编写的,所以有很好的跨平台性和可移植性,无论是在 windows.Linux,还是 mac. 操作简单. Ant 是由一个内置任务和可选任务组成的,运行时需要一个构

NFC学习笔记——三(在windows操作系统上安装libnfc)

本篇翻译文章: 这篇文章主要是说明如何在windows操作系统上安装.配置和使用libnfc. 一.基本信息 1.操作系统: Windows Vista Home Premium SP 2 2.硬件信息: System: Dell Inspiron 1720 Processor: Intel Core 2 Duo CPU T9300 @ 2.5GHz 2.5GHz System type: 32-bit Operating System 3.所需软件: 在windows操作系统上安装软件需要下列

存储学习之--通过StarWind在Windows 2008 Server模拟IP SAN

存储学习之--通过StarWind在Windows 2008 Server模拟IP SAN 一.StarWind 介绍 StarWind 与 StarPort iSCSI 一起,这个软件准许你输出任何本地 CD 和 DVD 数据到网络上,你在网络上能够虚拟硬盘,输出整体服务器储存子系统和大量的快照工作. 1.软件介绍 ISCSI软件. StarWind 是一个独立于硬件,适合网吧.企业虚拟磁盘数据管理.速度非常的快! 成本效益和可升级的存储管理解决方案,能够得到存储区域网络的好处,如:增强的灾难

Windows 8.1 store app 开发笔记

零.简介 一切都要从博彦之星比赛说起.今年比赛的主题是使用Bing API(主要提到的有Bing Map API.Bing Translate API和Bing AD API)设计移动应用(Windows store app和Windows phone app).从7月初开始设计到现在,应用的功能已经基本完成,就差美工来给界面优化一下.下面是我设计的应用的功能和实现的方法, 一.BING MAP API 作为一个以Bing Map API为主的应用,主要有以下的功能: 1.定位: 1 priva

android学习第1篇:windows下android环境搭建:adt-bundle

安卓学习开始了! 在windows上搭建安卓开发环境,看似简单,其实问题很多,我整整搭建了5天才搞定,当然,也是因为工作有些忙的原因,时间不太多,OK,本篇教程,我会将我遇到的所有问题都写上,希望看到这篇博客的朋友,不会犯同样的错误. 一.搭建JAVA开发环境 1.基本概念 如果你会JAVA,那直接略过就行. http://blog.csdn.net/alspwx/article/details/20799017 这篇博客,是我以前转载的别人的,主要是介绍:J2EE\J2ME\JVM\JRE\J

C#学习日志 day 5 plus ------ windows phone 8.1真机调试手机应用

在vs2013中,可以写windows phone 8.1的程序,但是调试时需要用到windows自带的虚拟机hyper-V 正版的系统开启hyper—V的时候不会有问题,但是盗版的系统可能导致系统不稳定,甚至崩溃,而我正好有windows phone8.1的手机,所以我在考虑用真机调试手机程序. 问过老师,老师告诉我要用remote debugger 这个插件,但是我在几次尝试之后并没有成功. 后来我发现了vs2013提供了windows phone8.1开发的SDK,所以我就试着装了一下,经

windows phone 8.0 app 移植到windows10 app 页面类

phone:PhoneApplicationPage    全部替换为Page phone:WebBrowser               全部替换为   WebView IsScriptEnabled="True"           空格 SupportedOrientations="Portrait"     空格 Orientation="Portrait"     空格 Orientation="Landscape"

Windows Phone 8.1地图应用开发

上班都是坐班车,很多TX肯定对租房子和买房子离班车站点近不近很上心.谁不想找个便宜的还能有班车的小区住啊(不差钱的可以直接无视我这屌丝行为了),于是我就想做一个应用,可以在用户搜索某个地点(比如心仪小区)时能显示出搜索地点附近的班车地点,另外计算下距这些班车站点都多远. 好了,题外话说完了,下面说说开发过程吧. 自从出了universal app(通用应用程序),我就知道大事要发生了.微软野心不小啊,采用universal APP 模式开发应用,使得统一应用在windows phone和wind