WPF привязка данных

Может кто-нибудь указать мне хороший ресурс (или дать подсказку), чтобы показать мне, как сделать привязку данных к элементам управления (ComboBox, ListBox и т. Д.) В WPF? Я в растерянности, когда все мои прелести WinForms отняты у меня, и я не настолько умен, чтобы начать с ...

11.08.2008 01:34:34
6 ОТВЕТОВ
РЕШЕНИЕ

Я нахожу обучающие видео в Windows Client .Net одинаково потрясающими. Dot Net Rocks TV также освещал это некоторое время назад.

3
11.08.2008 02:15:41
эти ссылки теперь кажутся бессмысленными (ссылка Windows Client .NET на DNS больше не разрешается)
Ortund 3.07.2017 14:59:56

Лучший ресурс, который я нашел для привязки данных WPF - это блог Беа Коста . Начните с первого поста и читайте дальше. Это круто

5
11.08.2008 01:38:49

в коде позади - установите DataContext вашего списка равным коллекции, к которой вы привязываете.

private void OnInit(object sender, EventArgs e)
{
  //myDataSet is some IEnumerable 

  // myListBox is a ListBox control.
  // Set the DataContext of the ListBox to myDataSet
  myListBox.DataContext = myDataSet;
}

В XAML Listbox может объявлять, к каким свойствам он привязывается, используя синтаксис «Binding».

<ListBox Name="myListBox" Height="200"
  ItemsSource="{Binding Path=BookTable}"
  ItemTemplate  ="{StaticResource BookItemTemplate}"/>
3
11.08.2008 01:40:55

И еще несколько ссылок, на случай, если вышеуказанного недостаточно:

Windows Presentation Foundation - Темы с практическими
рекомендациями по привязке данных - около 30 статей «Как сделать» из MSDN.
«В темах этого раздела описывается, как использовать привязку данных для привязки элементов к данным из различных источников данных в форме объектов общеязыковой среды выполнения (CLR) и XML».

Переход к привязке данных WPF по одному шагу
- от гуру WPF Джоша Смита
"В этой статье объясняются абсолютные основы привязки данных WPF. В ней показано четыре различных способа выполнения одной и той же простой задачи. Каждая итерация приближается к самой компактной, Возможна реализация только на XAML. Эта статья предназначена для людей, не имеющих опыта связывания данных WPF. "

3
11.08.2008 04:40:11

Вот еще один хороший ресурс из MSDN: Обзор привязки данных .

2
11.08.2008 05:51:39

Есть три вещи, которые вам нужно сделать:

  1. Свяжите ItemsSource ComboBox со списком параметров.
  2. Свяжите SelectedItem со свойством, которое содержит выбор.
  3. Установите ComboBox.ItemTemplate для DataTemplate для ComboBoxItem.

Так, например, если вашим объектом контекста данных является человек, имеющий адреса электронной почты, и вы хотите выбрать его основной, у вас могут быть классы с этими сигнатурами:

public class EmailAddress
{
    public string AddressAsString { get; set; }
}

public class Person
{
    public IEnumerable<EmailAddress> EmailAddresses { get; }
    public EmailAddress MainEmailAddress { get; set; }
}

Затем вы можете создать поле со списком следующим образом:

<ComboBox ItemsSource="{Binding EmailAddresses}" SelectedItem="{Binding MainEmailAddress}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <ComboBoxItem Content="{Binding AddressAsString}"/>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

Теперь вам нужно реализовать INotifyPropertyChanged в Person и EmailAddress. Для коллекции EmailAddresses вы можете поддержать ее с помощью ObjservableCollection.

Или в качестве альтернативы вы можете использовать Update Controls .NET . Это проект с открытым исходным кодом, который заменяет привязку данных и не требует INotifyPropertyChanged. Вы можете использовать любую коллекцию, имеющую смысл для поддержки свойства EmailAddresses. XAML работает так же, как и выше, за исключением того, что вы импортируете пространство имен UpdateControls.XAML и замените {Binding ...} на {u: Update ...}.

2
29.12.2008 14:42:47