private void AddSubtask_Click(object sender, RoutedEventArgs e) { EditSubTaskWindow window = new EditSubTaskWindow(this); if (window.ShowDialog() ?? false) { AddSubtask(window.EditedTask); } }
private void AddSubtask(SubTask subtask) { subtasks.Add(subtask); RowDefinition rowDefinition = new RowDefinition() { Height = new GridLength(30) }; rowSubtasks.Height = new GridLength(rowSubtasks.Height.Value + rowDefinition.Height.Value); gridSubtasks.RowDefinitions.Add(rowDefinition); Label lblSubtask = new Label() { Margin = new Thickness(50, 1, 0, 0), FontWeight = FontWeights.Bold, Content = subtask.Name, ToolTip = !string.IsNullOrEmpty(subtask.Description) ? subtask.Description : null }; Button btnEdit = new Button() { Margin = new Thickness(5), Style = FindResource("ImageButton") as Style, ToolTip = "Update Subtask", Content = new Image() { Source = new BitmapImage(new Uri("/Resources/edit_24.png", UriKind.Relative)) } }; Button btnRemove = new Button() { Margin = new Thickness(5), Style = FindResource("ImageButton") as Style, ToolTip = "Remove Subtask", Content = new Image() { Source = new BitmapImage(new Uri("/Resources/remove_24_red.png", UriKind.Relative)) } }; int row = gridSubtasks.RowDefinitions.Count - 1; gridSubtasks.Children.Add(lblSubtask); Grid.SetColumn(lblSubtask, 0); Grid.SetRow(lblSubtask, row); gridSubtasks.Children.Add(btnEdit); Grid.SetColumn(btnEdit, 1); Grid.SetRow(btnEdit, row); gridSubtasks.Children.Add(btnRemove); Grid.SetColumn(btnRemove, 2); Grid.SetRow(btnRemove, row); btnEdit.Click += (sender, e) => { EditSubTaskWindow window = new EditSubTaskWindow(this, subtask); if (window.ShowDialog() ?? false) { lblSubtask.Content = subtask.Name; lblSubtask.ToolTip = !string.IsNullOrEmpty(subtask.Description) ? subtask.Description : null; } }; btnRemove.Click += (sender, e) => { subtasks.Remove(subtask); gridSubtasks.Children.Remove(lblSubtask); gridSubtasks.Children.Remove(btnEdit); gridSubtasks.Children.Remove(btnRemove); int rowIndex = gridSubtasks.RowDefinitions.IndexOf(rowDefinition); foreach (UIElement child in gridSubtasks.Children) { if (Grid.GetRow(child) > rowIndex) { Grid.SetRow(child, Grid.GetRow(child) - 1); } } gridSubtasks.RowDefinitions.Remove(rowDefinition); rowSubtasks.Height = new GridLength(rowSubtasks.Height.Value - rowDefinition.Height.Value); }; }