首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DomainDataSource,绑定和游标

DomainDataSource,绑定和游标
EN

Stack Overflow用户
提问于 2009-12-17 03:19:58
回答 1查看 1.1K关注 0票数 1

WPF/Silverlight中的数据库以依赖属性、DataContext对象和DataSource对象为中心。据我所知,依赖属性与环境属性是一样的,它们对绑定的意义基本上是,如果您将一堆小部件放入容器中,那么只需要为容器指定一个DataContext

这个问题有几个部分。

  1. DataContextDataSource之间的区别是什么,它们是如何联系的?在WPF/Silverlight数据库中管理游标的
  2. 是什么?WPF/Silverlight数据库中的WinForms CurrencyManagerCursor是否有直接的等价性?

DataGrid似乎有一个CurrentItem属性。如果将一组小部件绑定到数据源的各个列,并且它们与datagrid共享相同的数据文本,则可以交互地移动数据集中选定的行,以更改其值在小部件中表示的行。有谁能给我解释一下这一切是怎么整合的吗?最好参考SL4。

当我这么做时:

代码语言:javascript
复制
private void buttonNew_Click(object sender, RoutedEventArgs e)
{
  Guid newId = Guid.NewGuid();
  Employee emp = new Employee() { Id = newId, FirstName = "NOT SET", LastName = "NOT SET" };
  AtomDomainContext adc = employeeDomainDataSource.DomainContext as AtomDomainContext;
  DomainDataSourceView ddsv = grid1.DataContext as DomainDataSourceView;
}

我得到了这个编译错误:

代码语言:javascript
复制
The type 'System.ComponentModel.IPagedCollectionView' is defined in an assembly 
that is not referenced. You must add a reference to assembly 'System.Windows.Data, 
Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
D:\Argent\Views\ManageEmployees.xaml.cs, 57, 7, Argent

这听起来很容易修复,但是当我试图添加对Argent项目的引用时,引用列表是空的;据推测,一个引用仅限于Silverlight部署到目标计算机的程序集。那我现在该怎么办?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-12-19 12:07:43

我找到了一些答案,所以如果没有其他人的有益贡献,我会回答我自己的问题。

DataContext是一种游标对象。向DataContext属性分配要绑定的对象的任何对象或IEnumerable集合,并围绕它构造一个包装器。如果分配IEnumerable,则DataContext将显示引用IEnumerable元素之一的CurrentItem属性。如果您分配了一些不是IEnumerable的东西,那么DataContext包装器的行为就好像它构造了一个IEnumerable,并将您的对象添加到集合中,然后继续成功,就好像这是您首先传递的一样,对象被设置为CurrentItem。

一个可能的IEnumerable是DomainDataSource,其中DataSource是一个基本clase。

Silverlight中的每个小部件都有一个DataContext属性。通常,您不会直接设置此属性,因为Microsoft将“依赖属性”称为“依赖属性”,据我所知,这些属性与环境属性完全相同,也就是说,除非您显式地设置它们,否则它们“继承”来自直接容器的值,而后者又可能继承。因此,您没有在一堆小部件上设置与DataContext相同的DataContext,而是让它们都是某个容器的子容器,并为此设置DataContext,它们都奇迹般地绑定到同一个游标上。

只需显式地指定XAML,就可以在XAML中创建一个新的DataContext对象;这将创建一个新实例并将其分配给指定它的小部件的DataContext属性;这是一个新实例,一个独立于任何其他DataContext的新游标。

在Silverlight4中,您可以引用另一个对象正在使用的DataContext;请参见元素绑定。

但是绑定只由DataContext部分指定。指定了一个DataContext,以便一个小部件有对象foo贡献它的上下文,指定一个绑定路径A将在对象foo上查找一个名为A的属性,如果找到它,它的值将从您的小部件中找到。

对于新手来说,真正令人困惑的是,虽然整个绑定可以在一个地方指定,但通常上下文是在一个大的复杂容器层次结构上指定的,并且只是在每个小部件上指定了路径,但是对于(例如)将一个组合框的ItemsSource绑定到一个查找表,则需要指定整个内容。我希望对那些追随我脚步的人来说,我已经说得更清楚了。

至于难以捉摸的'System.Windows.Data‘的位置,它在%ProgramFiles%\Microsoft SDKs\Silverlight\v4.0\Libraries\Client\System.Windows.Data.dll中

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1919247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档