I have got MVVM Applikation. Now i need a Datagrid with a variable amount of columns and rows. Initial populating the datagrid works fine, but the application crashes randomly when updating the datagrid with the following exception
"An unhandled exception occured in the UI: 'Collection was modified; enumeration operation > might not execute.'."
The crash happends directly after calling drawDatagrid()
code in my xaml:
<DataGrid
MaxWidth="{Binding Width}"
ItemsSource="{Binding SizeQuantityTable}"
AutoGenerateColumns="True"
SelectionMode="Single" SelectionUnit="CellOrRowHeader"
MouseDown="DataGrid1_MouseClick"
MouseDoubleClick="AppointmentOnMouseDoubleClick"
CanUserResizeColumns="False"
CanUserResizeRows="False"
CanUserSortColumns="False"
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserReorderColumns="False"
ScrollViewer.CanContentScroll="True"
HorizontalAlignment="Left"
VerticalGridLinesBrush="DarkGray"
GridLinesVisibility="All"
HorizontalGridLinesBrush="DarkGray"
/>
The Code in the ViewModel for updating the Datagrid
private void drawDataGrid()
{
SizeQuantityTable = new DataTable();
DataColumn dayColumn = new DataColumn();
try
{
dayColumn.ColumnName = "Tag";
SizeQuantityTable.Columns.Add(dayColumn);
foreach (var line in CalenderWorkPlanLines)
{
DataColumn column = new DataColumn();
column.ColumnName = line.Fullname;
SizeQuantityTable.Columns.Add(column);
}
for (int i = 0; i < DaysOfMonth.Count(); i++)
{
DataRow row = SizeQuantityTable.NewRow();
row[dayColumn] = DaysOfMonth[i];
int j = 1;
foreach (var line in CalenderWorkPlanLines)
{
var tmp = line.AppointmentsString.ToList();
row[SizeQuantityTable.Columns[j]] = line.AppointmentsString[i];
j++;
}
SizeQuantityTable.Rows.Add(row);
}
App.Current.Dispatcher.BeginInvoke(
(System.Action)(() =>
{
RaisePropertyChanged("SizeQuantityTable");
}), null);
}
catch (Exception ex)
{
Loggers.StartUI.Error("Exception during population of SizeQuantityTable - WorkPlanAppointments" + "in CalenderWorkplanViewModel", ex);
}
}