Простая работа CRUD с WPF и привязкой данных - PullRequest
6 голосов
/ 11 февраля 2010

Я новичок в WPF для разработки приложений для Windows, просто хотел сначала рассказать об этом. Я использую Visual Studio 2010 и .NET Framework 4.0.

Я работаю над довольно простым инструментом администрирования. Ради простоты, скажем, я работаю с данными сотрудников. Я создал небольшой UserControl с именем UserDetail, который имеет все поля, относящиеся к классу Employee.

Какой самый простой способ привязать элементы управления вводом в моем UserDetail? При создании нового экземпляра может быть пустой экран или существующие значения при редактировании существующего экземпляра.

Я попробовал следующее в конструкторе:

DataContext = _employee;

И я связал такой элемент управления в XAML:

<TextBox Name="txtFirstName" Text="{Binding FirstName}"/>

Это работает, но это не похоже на правильный способ сделать это. Это простой пример, но я пока не нашел ничего полезного.

Любые предложения или ссылки на учебник для такого рода простой привязки?

Ответы [ 2 ]

4 голосов
/ 12 февраля 2010

Как Джоэл говорит, что вы на правильном пути. В какой-то момент вам нужно явно установить DataContext в коде позади. Обычно это делается на верхнем уровне - как в вашем классе Window - и все последующие DataContext должны быть установлены через DataBindings.

В вашем конкретном примере вы говорите, что работаете над UserControl. Вы должны иметь возможность привязывать DataContext элемента управления UserDetails непосредственно к тому месту, где используется элемент управления, и, следовательно, вам не нужно устанавливать DataContext в коде позади для UserControl. По крайней мере, обычно пользователь вашего UserControl сообщает пользователю, какие данные использовать.

Допустим, у вас есть класс AllEmployees со свойством SelectedEmployee. Вы устанавливаете экземпляр этого объекта как DataContext в своем окне - в коде позади. Теперь вы хотите, чтобы в вашем окне отображались данные пользователя для SelectedEmployee. Элемент управления UserDetails создается при условии, что у него есть объект Employee, связанный с его DataContext, и теперь вы убедитесь, что он есть, установив его в DataBinding:

<Window xmlns:local="YourNamespaceHoldingTheUserDetailsControl>
    ..
    <local:UserDetails DataContext={Binding SelectedEmployee} />
    ..
</Window>   

Вы также можете добавить свойство Employee в свой класс UserDetails, который установит DataContext - если вы считаете, что это выглядит лучше в привязке.

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

Удачи в изучении WPF! Это немного отличается от других структур GUI, поэтому кривая обучения может быть немного крутой. Но как только вы попадаете в это, это замечательное место!

2 голосов
/ 11 февраля 2010

Вы на правильном пути.

Я рекомендую вам прочитать эту статью на M-V-VM .

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