private void AddNewItem(RailsIndexViewModel indexViewModel) { if (this.railsEditViewFactory.ShowEditWindow(indexViewModel.ItemType, out var editedInstance) == true) { indexViewModel.ItemsSource.Add(this.editViewModelFactory.Create(editedInstance)); } }
private UIElement CreateAddButton(RailsIndexViewModel viewModel) { var button = new Button { Content = "+", HorizontalAlignment = HorizontalAlignment.Left }; button.Command = new DelegateCommand((x) => AddNewItem(viewModel)); return(button); }
public View CreateIndexView(IList modelList, Type type) { var grid = new Grid(); var viewModel = new RailsIndexViewModel(modelList, type); //grid.AddRowDefinition(new GridLength(1.0, GridUnitType.Star)); //grid.AddChild(CreateTable(viewModel), thickness: 0); //grid.AddRowDefinition(GridLength.Auto); //grid.AddChild(CreateAddButton(viewModel), 1, thickness: 0); return(grid); }
public UIElement CreateIndexView(IList modelList, Type type) { var grid = this.gridService.Create(); var viewModel = new RailsIndexViewModel(modelList, type); this.gridService.AddStarRowDefinition(grid); this.gridService.AddChild(grid, CreateTable(viewModel), 0, 0, 0); this.gridService.AddAutoRowDefinition(grid); this.gridService.AddChild(grid, CreateAddButton(viewModel), 1, 0, 0); return(grid); }
private static void Delete(object arg, RailsIndexViewModel indexViewModel) { if (!(arg is RailsEditViewModel itemViewModel)) { return; } if (MessageBoxResult.OK != MessageBox.Show("本当に削除しますか?", "削除", MessageBoxButton.OKCancel)) { return; } indexViewModel.ItemsSource.Remove(itemViewModel); }
private FrameworkElement CreateTable(RailsIndexViewModel viewModel) { var dataGrid = new DataGrid { DataContext = viewModel, AutoGenerateColumns = false, CanUserAddRows = false, ItemsSource = viewModel.ItemsSource }; foreach (var property in viewModel.ItemType.GetProperties() .Where(p => p.HasVisibleRailsBindAttribute())) { Debug.Assert(property.CanRead); dataGrid.Columns.Add(CreateRailsBindColumn(property)); } dataGrid.Columns.Add(CreateEditColumn()); dataGrid.Columns.Add(CreateDeleteColumn(viewModel)); return(dataGrid); }
private static DataGridTemplateColumn CreateDeleteColumn(RailsIndexViewModel viewModel) { return(CreateButtonColumn( new DelegateCommand(x => Delete(x, viewModel)), "削除")); }