Простая работа CRUD с WPF и привязка данных

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

Я работаю над довольно простым административным средством. Для простоты польза позволяет, говорят, что я работаю с данными Сотрудника. Я создал немного UserControl по имени UserDetail, который имеет все поля, которые касаются класса Сотрудника.

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

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

DataContext = _employee;

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

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

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

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

6
задан 80bower 11 February 2010 в 19:45
поделиться

1 ответ

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

В вашем конкретном примере вы говорите, что работаете над UserControl. Вы должны иметь возможность связать DataContext элемента управления UserDetails непосредственно там, где этот элемент управления используется, и, следовательно, вам не нужно устанавливать DataContext в коде для UserControl. По крайней мере, обычно пользователь вашего 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! Он немного отличается от других фреймворков графического интерфейса, поэтому кривая обучения может быть немного крутой. Но как только вы попадаете в это место, это прекрасное место!

4
ответ дан 17 December 2019 в 07:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: