【发布时间】:2011-04-26 21:11:07
【问题描述】:
这应该很简单:如果我有一个实体框架主从关系,我如何在代码中添加一个明细记录?假设我有一个名为 Book 的父表/实体和一个名为 Chapter 的子表/查找表/实体,其中包含一个 ChapterTitle 字段/属性。我希望用户能够在文本框中键入章节标题,然后单击“添加章节标题”按钮。然后,新的 ChapterTitle 将出现在通过 CollectionViewSource 绑定到 Chapters 表/实体的 ListView 中。
我没有使用 MVVM(我也没有寻求涉及 MVVM 的答案)。我正在使用this Julie Lerman post 中所述的数据源窗口中的拖放操作。我的情况的不同之处在于,我不是通过数据网格显示和添加详细信息,而是使用 ListView 和文本框让用户添加新的章节标题。
拖放已在 XAML 中创建了两个 CollectionViewSource 条目:
<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) 将其添加为新的详细信息记录?我希望这很简单,但是我花了太多时间尝试却没有任何运气。提前致谢!
【问题讨论】:
标签: wpf entity-framework binding collectionviewsource