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);
        }
Beispiel #3
0
        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)),
                "削除"));
 }