zoukankan      html  css  js  c++  java
  • 大作业杂谈

    关于第二,三,四的四个实验,对于我这种新技能get很慢的人来说,写起来真的有点吃力。过两天就要交了,我也只是写完了WPF,应用商店和windowsphone都是进行到中间的数据库部分就卡在那里了。(关于我为什么不用sqlite,我只想说,按着网上和其他同学的教程走,到我这里总是缺少引用集,分明添加了引用,目标框架也改过了,就是不行我也真没辙),然后就先写一些目前我搞懂的东西吧。

    1.linq to xml

    在wpf中,我使用了xml文件来存储用户所录入的数据,当然就要学习如何对xml文件的读写,增删查改了。于是万能的百度有一次给了我答案,http://blog.csdn.net/dyllove98/article/details/8708323 这篇文章中很详细的讲了用不同的方法操作xml文件(很详细),下面我就我用到的东西,总结一下:

    1)xdocument

    xdocument用以操作xml文档,与xmldocument基本相同,(但我在.net 4.5上,linq to xml 只能用xdocument。。。)

    要用这个首先要using system.xml.linq; 然后就可以设变量了~~

     1             XDocument xdoc = XDocument.Load("tems.xml");
     2             XElement xroot = new XElement("root");
     3             XElement xitem = new XElement("item");
     4             XElement xname = new XElement("name");
     5             XElement xdate = new XElement("date");
     6             XElement xlast = new XElement("last");
     7             XElement ximportance = new XElement("importance");
     8 
     9             xname.Value = item.Name;
    10             xdate.Value = item.Date;
    11             xlast.Value = item.LastDay;
    12             ximportance.Value = item.Importance;
    13             xitem.Add(xname, xdate, xlast, ximportance);
    14             xroot.Add(xitem);
    15             xdoc.Add(xroot);
    16             xdoc.Save("items.xml");

    这样就会在bin的debug下创建一个“item.xml"的文件,然后把item的各种属性信息录入(item是我自己建的一个用以表示用户录入信息的一个类),最后保存。要注意:xDocument.save(string)不能用于应用商店应用,(这也是一度困扰我的问题,最后只要把文件路径的字符串换成流就好了)。

    (原博中作者给出了三种写入xml文件的简便方法,我写的这个是最笨的。。。)

    2)一些操作

    然后是:插入,删除,查找(均为原博得例子)

    插入:

    1 XElement i = xDoc.Root.Element("FlyInfo").Element("Seat"); //父节点(FlyInfo)下的子节点(Seat)
    2 
    3             //这里给父亲添加个儿子(在末尾添加的) 在之前添加用:AddBeforeSelf
    4             i.AddAfterSelf(
    5                  new XElement("Info","详细信息") //这里Info没有儿子。也就是Info节点没有子节点
    6                 );
    7 
    8             xDoc.Save("tableDemo.xml");

    删除:

     1  //当汤姆退学。需删除元素(课桌)
     2             var E18 = from item in xDoc.Descendants("Student")
     3                       where item.Element("name").Value.Equals("汤姆")  //找到汤姆这个学生
     4                       select item;
     5 
     6             //删除满足条件的节点(同学),最后只剩下id=2和id=3的节点(学生) 以下三句效果相同
     7             E18.Remove();
     8             //E8.ToList().ForEach(it => it.Element("name").Parent.Remove());  
     9             //E8.ToList().ForEach(it => it.Element("age").Parent.Remove());
    10             xDoc.Save(Console.Out);

    修改:

    1      //当发现学生Id=1的学生姓名不能是英文。需修改成中文
    2             var E7 = from item in xDoc.Descendants("Student")
    3                      where item.Attribute("Id").Value.Equals("1")
    4                      select item;
    5 
    6             //找到name元素,修改value。同理。修改age一样。。扩展:SetAttributeValue(name,value)添加属性
    7             E7.ToList().ForEach(it => it.Element("name").SetValue("汤姆"));
    8             xDoc.Save(Console.Out);

    关于具体的内容可以参照上面给的链接,我就是一步步照里面做的。

    2.listview的datatemplate

    DataTemplate顾名思义,就是数据模板,用来指定数据的表现形式。因为我的应用是做一个日程的天数倒计时提醒,所以需要一条条添加数据,这里就需要用到模板了。下面是我创建的xml 代码:

     1 <ListView.ItemTemplate>
     2                 <DataTemplate>
     3                     <Grid>
     4                         <Grid.ColumnDefinitions>
     5                             <ColumnDefinition Width="{StaticResource col1_width}"/>
     6                             <ColumnDefinition Width="{StaticResource col2_width}"/>
     7                             <ColumnDefinition Width="{StaticResource col3_width}"/>
     8                             <ColumnDefinition Width="{StaticResource col4_width}"/>
     9 
    10 
    11                         </Grid.ColumnDefinitions>
    12                         <Grid.Resources>
    13                             <Style TargetType="TextBlock">
    14                                 <Setter Property="FontFamily" Value="宋体"/>
    15                                 <Setter Property="FontSize" Value="25"/>
    16                             </Style>
    17                         </Grid.Resources>
    18                         <TextBlock x:Name="t1" Grid.Column="0" Text="{Binding Path= Name}" FontFamily="Global User Interface"/>
    19                         <TextBlock x:Name="t2" Grid.Column="1" Text="{Binding Path= Date}"/>
    20                         <TextBlock x:Name="t3" Grid.Column="2" Text="{Binding Path= LastDay}"/>
    21                         <TextBlock x:Name="t4" Grid.Column="3" Text="{Binding Path= Importance}" FontFamily="Global User Interface"/>
    22 
    23 
    24 
    25                     </Grid>
    26                 </DataTemplate>
    27             </ListView.ItemTemplate>

    呃,代码比较乱,其实我就是想说:template就是把每行的格式固定住了,用户不能自己拖拽表格边框,所有的宽度和高度都是确定好的,不能被改变。

    It‘s too late at night! 就先写到这里,希望deadline之前能够尽快解决好数据库的问题。(c#虐我千百遍,我待c#如初恋 = =!)

  • 相关阅读:
    前端切图:自制简易音乐播放器
    SEO那些事:一句代码一键分享网站
    POJ 2553 Tarjan
    POJ 2186 Tarjan
    POJ 1236 Tarjan算法
    POJ 1330 Tarjan LCA、ST表(其实可以数组模拟)
    POJ 1470 Tarjan算法
    POJ 1985 求树的直径 两边搜OR DP
    POJ 3687 拓扑排序
    POJ 3522 Kruskal
  • 原文地址:https://www.cnblogs.com/3013218071zjr/p/4507260.html
Copyright © 2011-2022 走看看