1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Windows;
  6. using System.Windows.Controls;
  7. using System.Windows.Data;
  8. using System.Windows.Documents;
  9. using System.Windows.Input;
  10. using System.Windows.Media;
  11. using System.Windows.Media.Imaging;
  12. using System.Windows.Navigation;
  13. using System.Windows.Shapes;
  14. using System.Xml.Serialization;
  15. using System.IO;
  16. namespace Test
  17. {
  18. /// <summary>
  19. /// Interaction logic for MainWindow.xaml
  20. /// </summary>
  21. public partial class MainWindow : Window
  22. {
  23. public MainWindow()
  24. {
  25. InitializeComponent();
  26. Loaded += new RoutedEventHandler(MainWindow_Loaded);
  27. dataGrid1.DataContext = list;
  28. // dataGrid1.ItemsSource = list;
  29.  
  30. }
  31. List<msgitem> list = new List<msgitem>();
  32. void MainWindow_Loaded(object sender, RoutedEventArgs e)
  33. {
  34. loadMsgItems();
  35. }
  36.  
  37. void loadMsgItems() {
  38.  
  39. dataGrid1.ItemsSource = null;
  40. list = (List<msgitem>)LoadFromXml("d:\\1.xml", list.GetType());
  41. dataGrid1.ItemsSource = list;
  42.  
  43. // list.Add(new msgitem() { isSelect=false, msg="test ..d第三方第三方?、工业投入也太容易>/....." });
  44. // list.Add(new msgitem() { isSelect = true, msg = "test .d第三方第三方?、工业投入也太容&&***//222......." });
  45. // dataGrid1.ItemsSource = null ;
  46. // dataGrid1.ItemsSource = list;
  47.  
  48. }
  49.  
  50. private void button1_Click(object sender, RoutedEventArgs e)
  51. {
  52. SaveToXml("d:\\1.xml", list);
  53. dataGrid1.ItemsSource = null;
  54. list = (List<msgitem>)LoadFromXml("d:\\1.xml", list.GetType());
  55. dataGrid1.ItemsSource = list;
  56. }
  57.  
  58. void SaveToXml(string filePath, object sourceObj )
  59. {
  60. if (!string.IsNullOrWhiteSpace(filePath) && sourceObj != null)
  61. {
  62.  
  63. using (StreamWriter writer = new StreamWriter(filePath))
  64. {
  65. System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(sourceObj.GetType());
  66. XmlSerializerNamespaces nameSpace = new XmlSerializerNamespaces();
  67.  
  68. nameSpace.Add("", ""); //not ot output the default namespace
  69. xmlSerializer.Serialize(writer, sourceObj, nameSpace);
  70. }
  71. }
  72. }
  73.  
  74. object LoadFromXml(string filePath, Type type)
  75. {
  76. object result = null;
  77.  
  78. if (File.Exists(filePath))
  79. {
  80. using (StreamReader reader = new StreamReader(filePath))
  81. {
  82. System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(type);
  83. result = xmlSerializer.Deserialize(reader);
  84. }
  85. }
  86. return result;
  87. }
  88.  
  89. private void CheckBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
  90. {
  91.  
  92. }
  93.  
  94. }
  95.  
  96. }

  

UI:

  1. <Window x:Class="Test.MainWindow"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. Title="MainWindow" Height="350" Width="525">
  5. <Grid>
  6. <Grid Height="215" Margin="23,96,0,0" Name="grid1" VerticalAlignment="Top">
  7. <Grid.ColumnDefinitions>
  8. <ColumnDefinition Width="321*" />
  9. <ColumnDefinition Width="130*" />
  10. </Grid.ColumnDefinitions>
  11. <ListBox SelectionMode="Single" Margin="6" Name="dataGrid1" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisibility="Disabled" >
  12.  
  13. <ListBox.ItemTemplate>
  14. <DataTemplate>
  15.  
  16. <CheckBox MouseDoubleClick="CheckBox_MouseDoubleClick" Content="{Binding msg}" Width="444" IsChecked="{Binding isSelect}" />
  17.  
  18. </DataTemplate>
  19. </ListBox.ItemTemplate>
  20.  
  21. </ListBox>
  22. </Grid>
  23. <Button Content="Button" Height="31" HorizontalAlignment="Left" Margin="28,59,0,0" Name="button1" VerticalAlignment="Top" Width="149" Click="button1_Click" />
  24. </Grid>
  25. </Window>

  

C# WPF xml序列化 反序列化的更多相关文章

  1. C# Json库 和 xml 序列化反序列化 存在的问题

    json 正常情况下不会对私有成员进行序列化和反序列化, 因此在用json做深拷贝时, 就会丢失数据. 解决办法:       声明成公有成员. json在序列化和反序列化时, 如果类中有IComma ...

  2. C# XML序列化/反序列化参考

    .NET提供了很不错的XML序列化/反序列化器,(它们所在的命名空间为System.Xml.Serialization)这是很方便的,下面对它的使用做一些总结,以供参考. 1,简单序列化 public ...

  3. php json与xml序列化/反序列化

    在web开发中对象的序列化与反序列化经常使用,比较主流的有json格式与xml格式的序列化与反序列化,今天想写个jsop的小demo,结果发现不会使用php序列化,查了一下资料,做个笔记 简单数组js ...

  4. XML序列化反序列化—常用类

    public class XMLSerializer    {        #region (public) xml序列化        /// <summary>        /// ...

  5. C# 复杂格式多级深度XML序列化反序列化

     default.xml 文件如下: <config><partnerships>  <partnership name="Main_Listener" ...

  6. WPF XML序列化保存数据 支持Datagrid 显示/编辑/添加/删除数据

    XML序列化保存数据 using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...

  7. C# XML序列化/反序列化类XmlSerializer使用示例

    using System; using System.IO; using System.Text; using System.Xml; using System.Xml.Serialization; ...

  8. XML序列化反序列化

    using System; using System.Collections.Generic; using System.IO; using System.Xml.Serialization; nam ...

  9. XML序列化/反序列化数据库形式保存和读取。

    直接上码: 首先创建class1类 public class Class1 { public string name { get; set; } public int age { get; set; ...

随机推荐

  1. 用eclipse 搭建struts2环境

    一,下载struts2对应的jar包,(http://struts.apache.org/download.cgi#struts2514.1),我一般下载struts2.3版本的 二,打开eclips ...

  2. vue-cil 中的配置分析

    自己写过配置分析,但是看了这位同学的文章之后发现写的比我全和细,索性直接转载过来了. 转自http://www.cnblogs.com/libin-1/p/6596810.html

  3. VMware 创建VMware9虚拟机及设置详细教程

    创建VMware9虚拟机及设置详细教程 by:授客 QQ:1033553122 1.点击Create a New Virtual Machine图标按钮,或者file->new virtual ...

  4. Java实现后缀表达式建立表达式树

    概述 表达式树的特点:叶节点是操作数,其他节点为操作符.由于一般的操作符都是二元的,所以表达式树一般都是二叉树. 根据后缀表达式"ab+cde+**"建立一颗树 文字描述: 如同后 ...

  5. servlet和jsp页面过滤器Filter的作用及配置

    刚刚有个朋友问我,Servlet的过滤器有什么作用? 现在发个帖子说明一下,            过滤器是一个对象,可以传输请求或修改响应.它可以在请求到达Servlet/JSP之前对其进行预处理, ...

  6. cuda中用cublas库做矩阵乘法

    这里矩阵C=A*B,原始文档给的公式是C=alpha*A*B+beta*C,所以这里alpha=1,beta=0. 主要使用cublasSgemm这个函数,这个函数的第二个参数有三种类型,这里CUBL ...

  7. LeetCode 题解之Remove Duplicates from Sorted List II

    1.题目描述 2.题目分析 链表的题,主要注意指针即可. 3.代码 ListNode* deleteDuplicates(ListNode* head) { if (head == NULL || h ...

  8. SQL SERVER 2012/ 2014 分页,用 OFFSET,FETCH NEXT改写ROW_NUMBER的用法(转)

    写法: 假装有个表Shop,其中有一列ShopName,取100000到100050条数据. ROW_NUMBER 的写法 SELECT * FROM (SELECT ShopName , ROW_N ...

  9. C#中获取数组中相加和最接近或等于(<=)给定值的算法

    , ,,,,,,,,, }; List<List<int>> mylist = new List<List<int>>(); int length = ...

  10. SQL SERVER中关于OR会导致索引扫描或全表扫描的浅析 (转载)

    在SQL SERVER的查询语句中使用OR是否会导致不走索引查找(Index Seek)或索引失效(堆表走全表扫描 (Table Scan).聚集索引表走聚集索引扫描(Clustered Index ...