Это должно быть просто: если у меня есть отношение детализации основной структуры сущности, как мне добавить запись детали в коде? Допустим, у меня есть родительская таблица / сущность с именем Book и дочерняя / справочная таблица / сущность с именем Chapter, содержащая поле / свойство ChapterTitle. Я хочу, чтобы пользователь мог вводить заголовки глав в TextBox, а затем нажимать кнопку «Добавить заголовок главы». Новый ChapterTitle появится в ListView, который связан с таблицей / сущностью Chapters через CollectionViewSource.
Я НЕ пользуюсь MVVM (и я не ищу ответа с использованием MVVM). Я использую перетаскивание из окна источников данных, как описано в этом сообщении Джули Лерман . Разница в моем случае заключается в том, что вместо отображения и добавления деталей через сетку данных я использую ListView и текстовое поле, чтобы пользователь мог добавить новый заголовок главы.
Перетаскивание создало две записи CollectionViewSource в XAML:
<Window.Resources>
<CollectionViewSource x:Key="booksViewSource" d:DesignSource="{d:DesignInstance my:Book, CreateList=True}" />
<CollectionViewSource x:Key="bookChaptersViewSource" Source="{Binding Path=ChaptersNav, Source={StaticResource booksViewSource}}" />
</Window.Resources>
Сгенерированный код выглядит следующим образом:
private System.Data.Objects.ObjectQuery<Book> GetBooksQuery(BookEntities bookEntities)
{
// Auto generated code
System.Data.Objects.ObjectQuery<BookNamespace.Book> booksQuery = bookEntities.Books;
// Update the query to include Chapters data in Books. You can modify this code as needed.
booksQuery = booksQuery.Include("Chapters");
// Returns an ObjectQuery.
return booksQuery;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
BookEntities bookEntities = BookEntities();
// Load data into Books. You can modify this code as needed.
System.Windows.Data.CollectionViewSource booksViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("booksViewSource")));
System.Data.Objects.ObjectQuery<BookNamespace.Book> booksQuery = this.GetBooksQuery(bookEntities);
booksViewSource.Source = booksQuery.Execute(System.Data.Objects.MergeOption.AppendOnly);
}
Какой код мне нужно добавить к моему событию button_click, чтобы взять заголовок главы пользователя из текстового поля и добавить его в качестве новой записи подробностей с помощью CollectionViewSource детали (bookChaptersViewSource)? Я ожидал бы, что это будет довольно просто, но я потратил слишком много времени, пытаясь и не имея никакой удачи. Заранее спасибо!