Являются ли DataContext новой версией DataSource? - PullRequest
1 голос
/ 13 января 2012

Что такое DataContext в C #?DataContext является новой версией DataSource?

Ответы [ 2 ]

2 голосов
/ 13 января 2012

(Похоже, вы имеете в виду свойство FrameworkElement.DataContext, которое появляется в WPF. Если нет, упс.)

Это немного похоже на DataSource, но гораздо более гибко. В WPF DataContext может быть буквально любым объектом, который имеет свойства. Чтобы связать свойство, вы просто указываете его имя, а WPF позаботится обо всем остальном, выловив указанное свойство из DataContext с некоторой магией отражения. (Поля не поддерживаются.)

Например, если вы связываете представление (скажем, UserControl или Window) с объектом Employee:

class Employee {
    public string FirstName { get; set; }
    public string LastName { get; set; }
    // more stuff. . .
}

тогда вы просто устанавливаете его DataContext для этого объекта. Тогда XAML для отображения информации из этого объекта Employee может быть таким простым:

<Label Content="{Binding FirstName}"/>
<Label Content="{Binding LastName}"/>

Опционально, DataContext может предоставлять дополнительные функциональные возможности, которые обеспечивают более богатую привязку. Например:

  • Если он реализует INotifyPropertyChanged или имеет свойства зависимостей , изменения в DataContext будут автоматически отражаться в пользовательском интерфейсе.

  • Свойства с сеттерами поддерживают двустороннее связывание.

  • Если он реализует INotifyDataErrorInfo , тогда вы можете выполнить проверку формы.

  • Если это объект ADO.NET, вы получаете всю обычную магию привязки ADO.NET.

1 голос
/ 13 января 2012

A DataContext представляет базу данных в LINQ to SQL или Entity Framework.

Это не совсем аналог чего-либо еще в .NET, поскольку он обрабатывает много разных вещей (отслеживание изменений, создание sql и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...