From e0b72976c15d99c2972d20925bf438c0c7055ad6 Mon Sep 17 00:00:00 2001
From: chr <chrry550@163.com>
Date: 星期五, 01 三月 2024 16:59:46 +0800
Subject: [PATCH] 新增序列化操作;
---
WPFProject.csproj | 1
Utils/XmlUtil.cs | 41 ++++++++
UI/Test/FunctionSetting.xaml.cs | 3
UI/Test/ProgramList.xaml | 5
UI/Test/SequnceList.xaml | 7
UI/Test/ProgramList.xaml.cs | 172 ++++++++++++++++++----------------
test.xml | 57 +++++++++++
7 files changed, 195 insertions(+), 91 deletions(-)
diff --git a/UI/Test/FunctionSetting.xaml.cs b/UI/Test/FunctionSetting.xaml.cs
index 637c21d..eada342 100644
--- a/UI/Test/FunctionSetting.xaml.cs
+++ b/UI/Test/FunctionSetting.xaml.cs
@@ -15,6 +15,7 @@
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
+using System.Xml.Serialization;
using WPFProject.Models;
using WPFProject.Utils;
@@ -45,7 +46,6 @@
{
DataContext = this;
InitializeComponent();
-
}
public DdDragHandler dragHandler { get; set; } = new DdDragHandler();
@@ -74,6 +74,5 @@
get { return _FuncModels; }
set => RaiseAndSetIfChanged(ref _FuncModels, value);
}
-
}
}
diff --git a/UI/Test/ProgramList.xaml b/UI/Test/ProgramList.xaml
index 56d6444..8acb0ab 100644
--- a/UI/Test/ProgramList.xaml
+++ b/UI/Test/ProgramList.xaml
@@ -24,10 +24,7 @@
<Grid>
<ListView ItemsSource="{Binding Programs}" ItemContainerStyle="{StaticResource a}"
VerticalContentAlignment="Center"
- dd:DragDrop.IsDragSource="True"
- dd:DragDrop.IsDropTarget="True"
- dd:DragDrop.ShowAlwaysDropTargetAdorner="True"
- dd:DragDrop.UseDefaultDragAdorner="True"
+
SelectionChanged="ListView_SelectionChanged">
<ListView.ItemTemplate>
<DataTemplate>
diff --git a/UI/Test/ProgramList.xaml.cs b/UI/Test/ProgramList.xaml.cs
index e2516e9..79c6d8c 100644
--- a/UI/Test/ProgramList.xaml.cs
+++ b/UI/Test/ProgramList.xaml.cs
@@ -1,82 +1,92 @@
-锘縰sing System;
-using System.Collections.ObjectModel;
-using System.ComponentModel;
-using System.Runtime.CompilerServices;
-using System.Windows.Controls;
-using WPFProject.Models;
-
-namespace WPFProject.UI.Test
-{
- /// <summary>
- /// ProgramList.xaml 鐨勪氦浜掗�昏緫
- /// </summary>
- public partial class ProgramList : UserControl, INotifyPropertyChanged
- {
- public virtual event PropertyChangedEventHandler PropertyChanged;
-
- protected virtual void RaisePropertyChanged(string name)
- {
- PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
- }
-
- protected void RaiseAndSetIfChanged<T>(ref T old, T @new, [CallerMemberName] string propertyName = null)
- {
- old = @new;
- if (propertyName != null)
- {
- RaisePropertyChanged(propertyName);
- }
- }
-
-
- private ObservableCollection<Program> _Programs = new ObservableCollection<Program> {
-
- new Program{ Name="123",
- Sequences = new ObservableCollection<Sequence>
- {
- new Sequence{
- Name="S123"
- },
- new Sequence
- {
- Name="S223"
- }
- }
- },
- new Program{ Name="223",
-
- Sequences = new ObservableCollection<Sequence>
- {
- new Sequence{
- Name="D123"
- },
- new Sequence
- {
- Name="D223"
- }
- }
- }
- };
- public ObservableCollection<Program> Programs
- {
- get { return _Programs; }
- set => RaiseAndSetIfChanged(ref _Programs, value);
- }
-
- public ProgramList()
- {
- DataContext = this;
- InitializeComponent();
- }
-
- public event EventHandler<Program> ProgramChanged;
-
- private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
- {
+锘縰sing System;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.IO;
+using System.Runtime.CompilerServices;
+using System.Windows.Controls;
+using System.Xml.Serialization;
+using WPFProject.Models;
+using WPFProject.Utils;
+
+namespace WPFProject.UI.Test
+{
+ /// <summary>
+ /// ProgramList.xaml 鐨勪氦浜掗�昏緫
+ /// </summary>
+ public partial class ProgramList : UserControl, INotifyPropertyChanged
+ {
+ public virtual event PropertyChangedEventHandler PropertyChanged;
+
+ protected virtual void RaisePropertyChanged(string name)
+ {
+ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
+ }
+
+ protected void RaiseAndSetIfChanged<T>(ref T old, T @new, [CallerMemberName] string propertyName = null)
+ {
+ old = @new;
+ if (propertyName != null)
+ {
+ RaisePropertyChanged(propertyName);
+ }
+ }
+
+
+ private ObservableCollection<Program> _Programs = new ObservableCollection<Program> {
+
+ new Program{ Name="123",
+ Sequences = new ObservableCollection<Sequence>
+ {
+ new Sequence{
+ Name="S123"
+ },
+ new Sequence
+ {
+ Name="S223"
+ }
+ }
+ },
+ new Program{ Name="223",
+
+ Sequences = new ObservableCollection<Sequence>
+ {
+ new Sequence{
+ Name="D123"
+ },
+ new Sequence
+ {
+ Name="D223"
+ }
+ }
+ }
+ };
+ public ObservableCollection<Program> Programs
+ {
+ get { return _Programs; }
+ set => RaiseAndSetIfChanged(ref _Programs, value);
+ }
+
+ public ProgramList()
+ {
+ DataContext = this;
+ InitializeComponent();
+ }
+
+ public event EventHandler<Program> ProgramChanged;
+
+ private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ ttt();
if (e.AddedItems.Count > 0)
- {
- ProgramChanged?.Invoke(this, e.AddedItems[0] as Program);
- }
- }
- }
-}
+ {
+ ProgramChanged?.Invoke(this, e.AddedItems[0] as Program);
+ }
+ }
+
+ public void ttt()
+ {
+ string path = "X:\\vs\\WPFProject\\test.xml";
+ XmlUtil.SerialToFile(Programs, path);
+ }
+ }
+}
diff --git a/UI/Test/SequnceList.xaml b/UI/Test/SequnceList.xaml
index 38396cb..f541201 100644
--- a/UI/Test/SequnceList.xaml
+++ b/UI/Test/SequnceList.xaml
@@ -145,7 +145,6 @@
<Setter Property="hc:BorderElement.CornerRadius" Value="0" />
<Setter Property="RowHeight" Value="30"/>
</Style>
-
</ResourceDictionary>
</UserControl.Resources>
@@ -157,9 +156,9 @@
</Grid.ColumnDefinitions>
<ListView ItemContainerStyle="{StaticResource a}" ItemsSource="{Binding Sequences}" BorderThickness="0"
dd:DragDrop.IsDragSource="True"
- dd:DragDrop.IsDropTarget="True"
- dd:DragDrop.ShowAlwaysDropTargetAdorner="True"
- dd:DragDrop.UseDefaultDragAdorner="True"
+ dd:DragDrop.IsDropTarget="True"
+ dd:DragDrop.ShowAlwaysDropTargetAdorner="True"
+ dd:DragDrop.UseDefaultDragAdorner="True"
SelectionChanged="ListView_SelectionChanged">
<ListView.ItemTemplate>
diff --git a/Utils/XmlUtil.cs b/Utils/XmlUtil.cs
new file mode 100644
index 0000000..5353449
--- /dev/null
+++ b/Utils/XmlUtil.cs
@@ -0,0 +1,41 @@
+锘縰sing System;
+using System.IO;
+using System.Xml.Serialization;
+
+namespace WPFProject.Utils
+{
+ public class XmlUtil
+ {
+ /// <summary>
+ /// 灏嗗璞″簭鍒楀寲鍒癤ml鏂囦欢涓�
+ /// </summary>
+ /// <param name="data">瀵硅薄</param>
+ /// <param name="filePath">xml璺緞</param>
+ public static void SerialToFile(object data, string filePath)
+ {
+ XmlSerializer serializer = new XmlSerializer(data.GetType());
+ string content = string.Empty;
+ //serialize
+ using (StringWriter writer = new StringWriter())
+ {
+ serializer.Serialize(writer, data);
+ content = writer.ToString();
+ }
+ //save to file
+ using (StreamWriter stream_writer = new StreamWriter(filePath))
+ {
+ stream_writer.Write(content);
+ }
+ }
+
+ public static T DeserialFromXml<T>(string filePath)
+ {
+ XmlSerializer serializer = new XmlSerializer(typeof(T));
+ using (StreamReader reader = new StreamReader(filePath))
+ {
+ return (T) serializer.Deserialize(reader);
+ }
+ }
+
+ }
+}
diff --git a/WPFProject.csproj b/WPFProject.csproj
index 3510247..a89c777 100644
--- a/WPFProject.csproj
+++ b/WPFProject.csproj
@@ -167,6 +167,7 @@
<Compile Include="Utils\IPlugin.cs" />
<Compile Include="Utils\Resize.cs" />
<Compile Include="Utils\Win32Helper.cs" />
+ <Compile Include="Utils\XmlUtil.cs" />
<Compile Include="ViewModels\ProgramListViewModel.cs" />
<Page Include="Controls\InnerWindow.xaml">
<SubType>Designer</SubType>
diff --git a/test.xml b/test.xml
new file mode 100644
index 0000000..353bc2a
--- /dev/null
+++ b/test.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-16"?>
+<ArrayOfProgram xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Program>
+ <Name>123</Name>
+ <Sequences>
+ <Sequence>
+ <Name>S123</Name>
+ <Steps>
+ <Step>
+ <Name>000</Name>
+ </Step>
+ <Step>
+ <Name>111</Name>
+ </Step>
+ </Steps>
+ </Sequence>
+ <Sequence>
+ <Name>S223</Name>
+ <Steps>
+ <Step>
+ <Name>000</Name>
+ </Step>
+ <Step>
+ <Name>111</Name>
+ </Step>
+ </Steps>
+ </Sequence>
+ </Sequences>
+ </Program>
+ <Program>
+ <Name>223</Name>
+ <Sequences>
+ <Sequence>
+ <Name>D123</Name>
+ <Steps>
+ <Step>
+ <Name>000</Name>
+ </Step>
+ <Step>
+ <Name>111</Name>
+ </Step>
+ </Steps>
+ </Sequence>
+ <Sequence>
+ <Name>D223</Name>
+ <Steps>
+ <Step>
+ <Name>000</Name>
+ </Step>
+ <Step>
+ <Name>111</Name>
+ </Step>
+ </Steps>
+ </Sequence>
+ </Sequences>
+ </Program>
+</ArrayOfProgram>
\ No newline at end of file
--
Gitblit v1.9.1