public static BazaDanych WczytajBaze(string lokalizacja) { BazaDanych bazaDanych = null; using (StreamReader sr = new StreamReader(lokalizacja, Kodowanie)) { bazaDanych = new BazaDanych(); bazaDanych.Ustawienia = new UstawieniaBazy(sr.ReadLine(), sr.ReadLine(), sr.ReadLine(), byte.Parse(sr.ReadLine()), byte.Parse(sr.ReadLine())) { Lokalizajca = lokalizacja }; int liczbaPytan = int.Parse(sr.ReadLine()); bool[] wylosowanePytania = LosujPytania(liczbaPytan, bazaDanych.Ustawienia.LiczbaPytanEgzaminacyjnych); for (int i = 0; i < liczbaPytan; ++i) { if (wylosowanePytania[i]) { Pytanie pytanie = new Pytanie(sr.ReadLine(), (TrybPytania)Enum.Parse(typeof(TrybPytania), sr.ReadLine())); bazaDanych.Pytania.Add(pytanie); int liczbaOdpowiedzi = int.Parse(sr.ReadLine()); for (int j = 0; j < liczbaOdpowiedzi; ++j) { pytanie.Odpowiedzi.Add(new Odpowiedz(sr.ReadLine(), Boolean.Parse(sr.ReadLine()))); } } } } return(bazaDanych); }
private void OdswierzOdpowiedzi(Pytanie pytanie) { var obiektyDoUsuniecia = uchwyt.Children.OfType <CheckBox>().ToArray(); foreach (var obiektDoUsuniecia in obiektyDoUsuniecia) { uchwyt.Children.Remove(obiektDoUsuniecia); } foreach (Odpowiedz odpowiedz in pytanie.Odpowiedzi) { CheckBox checkbox = new CheckBox() { Width = 650, IsChecked = odpowiedz.MojaOdpowiedz, Margin = new Thickness(Margin.Left, Margin.Top + 5, Margin.Right, Margin.Bottom), IsEnabled = MainWindow.mainWindowObject.TrybProgramu == MainWindow.TrybyProgramu.Egzamin ? true : false, Content = new TextBlock() { Text = odpowiedz.TrescOdpowiedzi, FontSize = 16, TextWrapping = TextWrapping.Wrap, FontFamily = new FontFamily("Microsoft JhengHei UI Light"), Foreground = MainWindow.mainWindowObject.TrybProgramu == MainWindow.TrybyProgramu.Sprawdzie ? (odpowiedz.CzyPoprawna ? Brushes.Green : Brushes.Red) : Brushes.Black } }; uchwyt.Children.Add(checkbox); if (pytanie.TrybPytania == TrybPytania.Jednokrotne) { checkbox.Checked += (s, args) => { for (int i = 1; i < uchwyt.Children.Count; ++i) { CheckBox innyCheckBox = uchwyt.Children[i] as CheckBox; if (innyCheckBox == s) { pytanie.Odpowiedzi[i - 1].MojaOdpowiedz = true; } else { innyCheckBox.IsChecked = pytanie.Odpowiedzi[i - 1].MojaOdpowiedz = false; } } }; checkbox.Unchecked += (s, args) => { for (int i = 1; i < uchwyt.Children.Count; ++i) { if (uchwyt.Children[i - 1] == s) { pytanie.Odpowiedzi[i - 1].MojaOdpowiedz = false; break; } } }; } else { Binding bindingPoprawnaOdpowiedz = new Binding("MojaOdpowiedz") { Source = odpowiedz, Mode = BindingMode.TwoWay }; checkbox.SetBinding(CheckBox.IsCheckedProperty, bindingPoprawnaOdpowiedz); } } }