powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Serialization
1 сообщений из 1, страница 1 из 1
Serialization
    #39361921
Osechka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Пишу элементарный органайзер на WPF .Хочу сделать так, чтобы при нажатии на любую дату в Календаре, справа появлялся планировщик задач на этот день, включая уже запланированные задачи, если они есть. Расчертила один день с 7.00 до 22.00, на каждый час - свой текстбокс (текстбоксы создаются динамически при выборе даты в календаре). Посоветовали использовать сериализацию. Классы написала, функции сериализации и десериализации написала, теперь думаю в какой момент вызывать эти функции... Запуталась, помогите кто может!
И еще вопрос: к текстбоксам добавляю контекстное меню. Теперь, когда я, выбираю в этом меню "Completed", хочу, чтобы текст этого текстбокса становился зачеркнутым. Что писать в private void Mi3_Click(object sender, RoutedEventArgs e)?

Код: 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.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
namespace WpfApplication3
{
   
    [Serializable]
    public class Task
    {
        public string ToDo { get; set; }
        public Task(){ }

    }

    [Serializable]
    public class Day
    {
        public List<Task> ListTasks { set; get; }
        public DateTime Date { get; set; }
        public Day() { }

    }

    public partial class MainWindow : Window
    {

        List<Day> lst = new List<Day>(); 

        public MainWindow()
        {
            InitializeComponent();

        }

        private void Mi3_Click(object sender, RoutedEventArgs e)
        {
            //((TextBox)((ContextMenu)((MenuItem)sender).Parent).PlacementTarget).FontStyle =???

        }

        private void Mi2_Click(object sender, RoutedEventArgs e)
        {
            ((TextBox)((ContextMenu)((MenuItem)sender).Parent).PlacementTarget).Text = "";
        }

        private void Mi1_Click(object sender, RoutedEventArgs e)
        {
            ((TextBox)((ContextMenu)((MenuItem)sender).Parent).PlacementTarget).Background = Brushes.Red;
            
        }

      
        private void Calendar_SelectedDatesChanged(object sender, SelectionChangedEventArgs e)
        {
            var calendar = sender as Calendar;
            if (calendar.SelectedDate.HasValue)
            {
                ContextMenu cm = new ContextMenu();
                MenuItem mi1 = new MenuItem();
                mi1.Header = "Importent";
                mi1.Click += Mi1_Click;
                MenuItem mi2 = new MenuItem();
                mi2.Header = "Delete";
                mi2.Click += Mi2_Click; ;
                MenuItem mi3 = new MenuItem();
                mi3.Header = "Completed";
                mi3.Click += Mi3_Click;

                cm.Items.Add(mi1);
                cm.Items.Add(mi2);
                cm.Items.Add(mi3);

                for (int i = 0; i < 16; i++)
                {
                    TextBox tb = new TextBox();
                    tb.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
                    tb.Height = 25;
                    tb.Style = (Style)this.Resources["MyRes"];
                    tb.Margin = new Thickness(2);
                    tb.ContextMenu = cm;
                    this.StEdits.Children.Add(tb);
                }


                var arDays = this.lst.Where(x => calendar.SelectedDate.Value.Date == x.Date).Cast<Day>(); //will be only one Day
    
                foreach ( var oneDay in arDays)
                {
                    int iCount = 0;
                    foreach (TextBox tb in this.StEdits.Children.Cast<TextBox>())
                        tb.Text = oneDay.ListTasks[iCount++].ToDo;

                }
              
            }

        }
        void Serialize()
        {
            try
            {
                using (FileStream fs = new FileStream("1.xml", FileMode.OpenOrCreate, FileAccess.Write))
                {
                    XmlSerializer xml = new XmlSerializer(typeof(List<Day>));
                    xml.Serialize(fs, lst);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        void Deserialize()
        {
            try
            {
                using (FileStream fs = new FileStream("1.xml", FileMode.Open, FileAccess.Read))
                {
                    XmlSerializer xml = new XmlSerializer(typeof(List<Day>));
                    this.lst = (List<Day>)xml.Deserialize(fs);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
           
            Serialize(); //??????

        }
      
    }
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Serialization
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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