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

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

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

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

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

DataContext = _employee;

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

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

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

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

2 ответов


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

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

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

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

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

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

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


вы на самом деле на правильном пути.

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