zoukankan      html  css  js  c++  java
  • WPF中后台存储数据方法一XML

    就我个人所得,目前用作WPF数据源的方法有如下几种:

    1.控件的互相绑定;

    2.XML存储数据;

    3.序列化反序列化json串存储;

    4.联系数据库;

    其中控件的相互绑定无非是binding方法,由于不能存储修改之后的操作,故在此不过多讨论;

    接下来说说XML方法存储数据;

    一、首先将数据存储在XML中

    1 <?xml version="1.0" encoding="utf-8" ?>
    2 <curriculum_info class_name = "高等数学" teacher = "吕良福" place ="24楼301室" time="31"></curriculum_info>

    例如一个名为curriculum_info的对象在courses.xml中;

    二、在XMAL中调用该对象中的数据

    在顶部(window下)需有如下代码:

     1     <Window.Resources>
     2         <XmlDataProvider x:Key="course-info" Source="courses.xml" XPath="/curriculum_info/*"></XmlDataProvider>
     3         <DataTemplate x:Key="showcourse">
     4             <TextBlock Text="{Binding XPath=class_name}"></TextBlock>
     5         </DataTemplate>
     6         <Style TargetType="{x:Type TextBlock}" >
     7             <Setter Property="FontStyle" Value="Italic" />
     8             <Setter Property="FontFamily" Value="Trebuchet MS" />
     9             <Setter Property="FontSize" Value="12" />
    10         </Style>
    11     </Window.Resources>
     
    对数据源的调用放在<Window.Resources>中。
      通过<XmlDataProvider>标记,实现对XML数据源的调用,x:Key是资源的引用的ID,Source是XML资源文件路径,XPath指出XML文件内部数据存放的路径。
     
    在<Window.Resources>还有另外两个标记,分别是DataTemplate和Style。
      DataTemplate中放置一个TextBlock用来,将TextBlock的Text属性与XML数据源中的class_name标记绑定,也就说用来显示XML文件中的class_name。
      Style是WPF的样式。在这里,我们指定了本Window中,所有的TextBlock都采用Style中定义的样式。
     
    接下来就可以实现绑定了:
    1 <TextBlock Grid.Column="1" Grid.Row="3">Course:<TextBlock DataContext="{Binding Source={StaticResource course-info}}" Text="{Binding XPath=class_name}" Width="26"/> </TextBlock>

    那么这个TextBlock中的Text就与XML中的curriculum_info的class_name绑定了;

     
  • 相关阅读:
    mybatis公用代码抽取到单独的mapper.xml文件
    mysql与oracle常用函数及数据类型对比00持续补充
    人民币在岸 离岸 中间价的含义与关系
    mysql hang and srv_error_monitor_thread using 100% cpu(已解决)
    long和BigDecimal引发的管理思考
    mybatis 3的TypeHandler深入解析(及null值的处理)
    mysql 5.7.17发布
    rabbitmq connection/channel/consumer/queue的数量关系详细分析
    rabbitMQ publish丢包分析
    INFO: task java:27465 blocked for more than 120 seconds不一定是cache太大的问题
  • 原文地址:https://www.cnblogs.com/Elson8080/p/4477632.html
Copyright © 2011-2022 走看看