Я согласен с тем, что знание точных проблем, с которыми вы столкнетесь, поможет нам дать лучший ответ, но для начала вы можете воспользоваться .net sdk https://github.com/watson-developer-cloud/dotnet -standard-sdk и стандартная ссылка на API с примерами https://console.bluemix.net/apidocs/assistant
Вы попробовали установку CanUserAddRows = "Верный" на DataGrid?
Проблема в том, что пользователь не может добавлять строки, или в том, что когда пользователь добавляет строку, она не сохраняется в резервном хранилище XML? Я могу легко добавить сетку данных с CanUserAddRows = "True" в приложение WPF, привязать сетку к списку в памяти, а затем попросить пользователя добавить строки, которые отражаются в этом списке в памяти. Это заставляет меня думать, что ваша проблема заключается в сохранении в резервное хранилище.
Когда я привязываюсь к XML в файловой системе, я больше не могу добавлять записи в сетку данных. Я думаю, вам понадобится небольшой обходной путь: вы читаете файл в коллекцию в памяти, привязываетесь к нему, а затем обновляете файл соответствующим образом, когда пользователи добавляют строки.
Чтобы добавить строку в WPF DataGrid, привязанную к XmlDataSource, вам необходимо напрямую изменить резервное хранилище данных. Вы можете использовать DataGrid для сбора информации о новой строке от пользователя, а затем в событии RowEditEnding вы можете добавить информацию о строке в резервное хранилище и предотвратить фактическую попытку DataGrid зафиксировать изменение, используя его внутренняя логика. Поскольку DataGrid привязан к XmlDataSource, он будет отображать изменения, внесенные вами в резервное хранилище.
Вот общая идея:
private void MyDataGrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
{
if (e.EditAction == DataGridEditAction.Cancel)
{
e.Cancel = false;
return;
}
if (e.EditAction == DataGridEditAction.Commit)
{
DataGridRow dgr = e.Row;
XmlElement xe = myXmlDataProvider.Document.CreateElement("NewRowElement");
foreach(DataGridCell cell in dgr.Cells)
{
xe.SetAttribute(cell.Name, cell.Value);
}
dataProvider.Document.DocumentElement.AppendChild(xe);
e.Cancel = true;
}
}
Убедитесь, что вы установили: CanUserAddRows = "True"
и что конструктор по умолчанию для связанного класса доступен.