Разница между Datacontext и ItemSource в WPF - PullRequest
5 голосов
/ 29 апреля 2009

Дубликат:

Почему DataContext и ItemsSource не являются избыточными?


В WPF мы можем назначить список элементов ComboBox двумя способами

//CODE #1
//WPF
<ComboBox name="cmbItems" ItemSource={Binding} />

//C#
cmbItems.DataContext = someList;

другой способ, напрямую назначить itemsource

//CODE #2
//WPF
<ComboBox name="cmbItems" ItemSource={Binding} />
//C#
cmbItems. ItemSource = someList;

оба служат цели, но какая разница в приведенном фрагменте? и что хорошо использовать?

Ответы [ 2 ]

9 голосов
/ 29 апреля 2009

DataContext в основном используется в формах, элементах управления и т. Д.

ItemSource - это относительный путь для привязки данных в этом DataContext.

Например, когда вы создаете форму для редактирования сведений о персоне, DataContext будет персоной, а различные элементы управления в форме будут привязаны к отдельному свойству этого объекта, например, имени, дате рождения и т. Д. 1005 *

2 голосов
/ 29 апреля 2009

Во втором примере вы можете опустить ItemsSource = {Binding}. Вы устанавливаете ItemsSource непосредственно на значение в вашем коде позади. Вам не нужно связывать здесь. В первом примере вы устанавливаете DataContext и используете привязку, чтобы снова извлечь его из DataContext.

Но это не имеет значения .. оба метода работают нормально ...

Я использую следующий большой палец правила: установите его в коде позади, если у меня есть доступная коллекция. Установите его в какой-то режим привязки, если мне нужно преобразовать коллекцию, чтобы я мог использовать IValueConverter для делать работу ...

...