Я нашел несколько ответов, поэтому в отсутствие полезного вклада от других я отвечу на свой вопрос.
DataContext является своего рода объектом курсора. Вы присваиваете свойству DataContext любой объект или коллекцию IEnumerable объектов, с которыми вы хотите связать, и вокруг него создается оболочка. Если вы назначаете IEnumerable, DataContext отображает свойство CurrentItem, которое ссылается на один из элементов IEnumerable. Если вы назначаете что-то, что не является IEnumerable, обертка DataContext ведет себя так, как будто он создает IEnumerable и добавляет ваш объект в коллекцию, а затем продолжает работать так, как если бы это было то, что вы передали в первую очередь, объект устанавливается как CurrentItem.
Одним из возможных IEnumerable является DomainDataSource, для которого DataSource является базовым условием.
Каждый виджет в Silverlight имеет свойство DataContext. Как правило, вы не устанавливаете это напрямую, из-за того, что Microsoft использует для вызова «свойств зависимости», которые, насколько я могу судить, в точности совпадают со свойствами окружения, то есть, если вы не установите их явно, они «наследуют» значение из непосредственного контейнера, которое, в свою очередь, может наследоваться. Поэтому вместо того, чтобы устанавливать тот же IEnumerable, что и DataContext для нескольких виджетов, вы делаете их всех потомками какого-то контейнера и задаете для них DataContext, и все они чудесным образом связываются с одним и тем же курсором.
Вы можете создать новый объект DataContext в XAML, просто указав его; это создает новый экземпляр и присваивает его свойству DataContext виджета, для которого вы его указываете; это новый экземпляр, новый курсор, независимый от любого другого DataContext.
В Silverlight4 вы можете ссылаться на DataContext, используемый другим объектом; см. привязку элемента.
Но привязка только частично указывается DataContext. Указав DataContext, чтобы у виджета был объект foo, вносящий свой контекст, указание пути привязки A будет искать свойство с именем A в объекте foo, а если он найден, будет смешивать его значение с вашим виджетом.
Что действительно вводит в заблуждение новичка, так это то, что хотя всю привязку можно указывать в одном месте, обычно контекст задается за несколько миль вверх по большой сложной иерархии контейнеров, и только путь указывается для каждого виджет, но для (например) связывания ItemsSource комбобокса с таблицей поиска вы do указываете все это. Надеюсь, я все прояснил для тех, кто следует по моим стопам.
Что касается расположения неуловимого «System.Windows.Data», оно находится в папке% ProgramFiles% \ Microsoft SDK \ Silverlight \ v4.0 \ Libraries \ Client \ System.Windows.Data.dll