private void Drag(object sender, MouseButtonEventArgs e) { FormulaBorder formula = (FormulaBorder)sender; DataObject data = new DataObject(formula); DragDrop.DoDragDrop(formula.Parent, data, DragDropEffects.Move); }
public Task(string folder, UserControl algorithm, BitmapImage image, string ImageText) { InitializeComponent(); this.folder = folder; this.algorithm = algorithm; this.image = image; this.ImageText = ImageText; if (!File.Exists(AppDomain.CurrentDomain.BaseDirectory + "/Sections/" + folder + "self.json")) { self_button.Visibility = Visibility.Collapsed; } taskdata = JsonConvert.DeserializeObject <TaskData>(Base.ReadFile(folder + "task.json")); TextBlock cond = Helpers.GetFormattedText(taskdata.Condition, 20); condition.Content = cond; string given = string.Join("\n", taskdata.Given); condition_brief.Children.Insert(1, Helpers.GetFormattedText(given, 20)); string determine = string.Join("\n", taskdata.Determine); condition_brief.Children.Add(Helpers.GetFormattedText(determine, 20)); AddText(); List <Border> formulas_blocks = new List <Border>(); for (int i = 0; i < taskdata.FormulasList.Count; i++) { Formula f = taskdata.FormulasList[i]; f.Order = i + 1; FormulaBorder border = new FormulaBorder() { Formula = f, Check = Check }; border.AddFormulaBlock(); border.MouseDown += Drag; formulas_blocks.Add(border); } Random random = new Random(); for (int i = formulas_blocks.Count - 1; i >= 1; i--) { int j = random.Next(i + 1); var temp = formulas_blocks[j]; formulas_blocks[j] = formulas_blocks[i]; formulas_blocks[i] = temp; } foreach (var t in formulas_blocks) { formulas.Children.Add(t); } }
private void Formulas_Drop(object sender, DragEventArgs e) { FormulaBorder source = (FormulaBorder)e.Data.GetData(typeof(FormulaBorder)); if (formulas.Children.Contains(source)) { return; } area.Children.Remove(source); source.FormulasDrop(); formulas.Children.Add(source); }
private void Check(bool right, InputFields inputs) { FormulaBorder border = (inputs.Parent as StackPanel).Parent as FormulaBorder; int index_area = area.Children.IndexOf(border); int order = 1; for (int i = 2; i < index_area; i += 2) { ++order; } if (right && order == border.Formula.Order) { inputs.LockFields(); border.BrushBorder(FormulaBorder.STATUS.RIGHT); border.MouseDown -= Drag; AddText(); } else { border.BrushBorder(FormulaBorder.STATUS.WRONG); } }
private void Area_Drop(object sender, DragEventArgs e) { FormulaBorder source = (FormulaBorder)e.Data.GetData(typeof(FormulaBorder)); if (!area.Children.Contains(source)) { var element = area.Children[area.Children.Count - 1]; source.Margin = new Thickness(0, 10, 0, 25); source.HorizontalAlignment = HorizontalAlignment.Left; source.AddInputsBlock(); formulas.Children.Remove(source); if (element is FormulaBorder) { area.Children.Remove(element); formulas.Children.Add(element); (element as FormulaBorder).FormulasDrop(); } area.Children.Add(source); source.BringIntoView(); } }