У меня есть сетка данных, которая содержит мою наблюдаемую коллекцию предметов. Когда я хочу отредактировать и обновить свою ячейку в столбце 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);
}
}
}
}
Все журналы существуют только для отладки.