Beispiel #1
0
        private void UpdateSelectedTask(string number)
        {
            SelectedTask = Exercises
                           .Descendants("task")
                           .FirstOrDefault(i => i
                                           .Attribute("number")
                                           .Value == number);

            DrawInstructions();
            DrawTaskTable();
            DrawDiagrams();
            DrawSolutionLines();
        }
Beispiel #2
0
        public void LoadTasks()                                                                        // Загрузка XML файла tasks.xml, обновление элемента Exercises и меню Exercises
        {
            Exercises = XDocument.Load("tasks.xml", LoadOptions.SetBaseUri | LoadOptions.SetLineInfo); // Обновление документа Exercises
            XmlSchemaSet schema = new XmlSchemaSet();

            schema.Add("", "TasksSchema.xsd");

            Exercises.Validate(schema, (sender, e) =>
            {
                throw new XMLValidationException(e.Message);
            });

            var exercises = Exercises            // Последовательность заданий для пунктов меню
                            .Descendants("task") // элементы с каждым заданием
                            .Select(i => new
            {
                Header = i.Element("name").Value.Trim('\n', '\t'),
                Tag    = i.Attribute("number").Value
            });

            foreach (var exercise in exercises)   // Добавление упражнений в меню
            {
                MenuItem mi = new MenuItem()
                {
                    Header = exercise.Header, IsCheckable = true
                };
                mi.Click += (sender, e) =>
                {
                    foreach (MenuItem item in TasksMenu)       //убираем галки у всех, кроме выбранного
                    {
                        item.IsChecked = mi == item;
                    }

                    UpdateSelectedTask(exercise.Tag);
                };
                TasksMenu.Add(mi);
            }
        }