powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Serialization XML в WPF
1 сообщений из 1, страница 1 из 1
Serialization XML в WPF
    #38862609
fuzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток !

У меня есть проект,который хранит точки графа в неопределенный бинарный формат .db ,прикапывать можно в папке.
Также есть процедура по восстановлению из этого файла в проект ( для редактирования )

Помогите,пожалуйста,сохранять точки на графе не бинарный формат,а в XML с возможностью восстановления.

[MainWindow.cs]
Восстановление из файла
[MainWindow.cs]
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
private void previewButton_Click(object sender, RoutedEventArgs e)
        {
            var senderButton = sender as Button;
            if (senderButton == null)
                return;
 
            
 
            try
            {
                using (var files = new FileStream(senderButton.Tag.ToString(), FileMode.Open, FileAccess.ReadWrite))
                {
                    decoder = (Decoder) new BinaryFormatter().Deserialize(files);
                }
 
                //clear all
                grid_main_window.Children.RemoveRange(1, grid_main_window.Children.Count);
 
                graph = new Graph();
                NodesComboBox.Items.Clear();
 
                //восстановление вершин
                for (int opi = 0; opi < decoder.NodesCount; opi++)
                {
                    graph.AddNode(decoder.NodeCoordinates[opi]);
                    grid_main_window.Children.Add(graph.Nodes.Last().View.Circle);
                    NodesComboBox.Items.Add(graph.Nodes.Last().View.Circle.Name);
                }
                NodesComboBox.SelectedIndex = 0;
                
                //восстановление ребер
                for (int opi = 0; opi < decoder.EdgesCount; opi++)
                {
                    graph.SourceNode = graph.Nodes[decoder.SourceNodeIdentifiers[opi]];
                    graph.TargetNode = graph.Nodes[decoder.TargetNodeIdentifiers[opi]];
 
                    graph.AddEdge();
 
                    var lastEdge = graph.Edges.Last();
                    grid_main_window.Children.Add(lastEdge.View.Line);
                   MessageBox.Show(lastEdge.View.Line.ToString());
 
 
                    Panel.SetZIndex(lastEdge.View.Line, -1);
 
                    graph.enable_conect = true;
                }
 
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
private void Take_Click(object sender, RoutedEventArgs e)
        {
            decoder = new Decoder
            {
                NodesCount = graph.Nodes.Count, 
                EdgesCount = graph.Edges.Count
            };
            decoder.Initialize();
            decoder.NodeCoordinates = graph.Nodes.Select(node => node.View.Center).ToArray();
            decoder.SourceNodeIdentifiers = graph.Edges.Select(edge => edge.Source.Id).ToArray();
            decoder.TargetNodeIdentifiers = graph.Edges.Select(edge => edge.Target.Id).ToArray();
 
 
           
            
 
            var saveBinaryDialog = new SaveFileDialog
            {
                DefaultExt = ".db",
                FileName = "Your_path",
                Filter = "Your_path (*.db)|*.db",
                InitialDirectory = @"C:\Path",
                
            };
 
            
            
            if (saveBinaryDialog.ShowDialog().Value)
            {
                using (var stream = new FileStream(Path.GetFullPath(saveBinaryDialog.FileName), FileMode.Create, FileAccess.Write))
                {
                 new BinaryFormatter().Serialize(stream, decoder);
                }
                
                               
            }



[Decoder.cs]

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
[Serializable]
    class Decoder
    {
        /// <summary>
        /// Колличество вершин графа.
        /// </summary>
        public Int32 NodesCount = 0;
        
        /// <summary>
        /// Колличество рёбер графа.
        /// </summary>
        public Int32 EdgesCount = 0;
 
        /// <summary>
        /// Массив координат вершин.
        /// </summary>
        public Point[] NodeCoordinates;
 
        public Int32[] SourceNodeIdentifiers;
 
        public Int32[] TargetNodeIdentifiers;
 
        /// <summary>
        /// динамическое выделение памяти под хранение графа в файл
        /// </summary>
        public void Initialize()
        {
            NodeCoordinates = new Point[NodesCount];
 
            SourceNodeIdentifiers = new Int32[EdgesCount];
 
            TargetNodeIdentifiers = new Int32[EdgesCount];
        }
        
    }
}
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Serialization XML в WPF
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]