WPF DataGrid CellEditEnding столбец является нулевым - PullRequest
0 голосов
/ 31 марта 2020

У меня есть сетка данных, которая содержит мою наблюдаемую коллекцию предметов. Когда я хочу отредактировать и обновить свою ячейку в столбце ModuleType, я получаю пустой столбец (ноль) и не могу обновить значения в своей коллекции и получить дополнительные ошибки, поскольку она не обновлялась.

Я делаю что-то не так? Я довольно новичок в C#.

EDIT1: я должен добавить, что я связываю свою коллекцию в коде при инициализации

XAML DataGrid

<DataGrid x:Name="ModulesTable" 
              Background="#d8deff" 
              Foreground="#383e42" 
              Grid.Row="1" 
              SelectionChanged="ModulesTable_SelectionChanged" 
              CellEditEnding="ModulesTable_CellEditEnding" 
              CanUserAddRows="False"
              CanUserDeleteRows="False"
              CanUserReorderColumns="False"
              AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTemplateColumn Header="#">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Path=LocalId}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn Header="Module Type">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Path=ModuleTypeName}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
                <DataGridTemplateColumn.CellEditingTemplate>
                    <DataTemplate>
                        <ComboBox Text="{Binding Path=ModuleTypeName}" SelectionChanged="ComboBox_SelectionChanged" IsEditable="True">
                            <ComboBoxItem>IZMO</ComboBoxItem>
                            <ComboBoxItem>LIMOAP</ComboBoxItem>
                            <ComboBoxItem>LIMOKO</ComboBoxItem>
                            <ComboBoxItem>VIMO</ComboBoxItem>
                        </ComboBox>
                    </DataTemplate>
                </DataGridTemplateColumn.CellEditingTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn Header="Clear">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Button>
                            <Image Source="{StaticResource CLOSE}"/>
                        </Button>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>

Метод события:

private void ModulesTable_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
    {
        Log.Debug("EDITING END");
        if (e.EditAction == DataGridEditAction.Commit)
        {
            Log.Debug("COMMIT");
            var column = e.Column as DataGridBoundColumn;
            Log.Debug("COLUMN: " + column);
            if (null != column)
            {
                Log.Debug("NOT NULL"); // CANNOT GET IN HERE
                var bindingPath = (column.Binding as Binding).Path.Path;
                if (bindingPath == "Col2") 
                {
                    int rowIndex = e.Row.GetIndex();
                    var el = e.EditingElement as ComboBox;
                    Log.Debug("RowIndex: " + rowIndex + ", Type: " + el.Text);
                }
            }
        }
    }

Все журналы существуют только для отладки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...