Я создал таблицу в Microsoft Sql CE, которую использую для хранения некоторых данных. Я создал ORM через SqlMetal, и я вставил источник данных в свой проект WPF.
Я хочу создать простую форму WPF, которую можно использовать для редактирования записи в таблице с помощью классов, сгенерированных ORM. Я хочу, чтобы эта форма поддерживала типичную семантику ОК / Отмена. Я создал форму, как мне кажется, типичным способом, используя двустороннюю привязку данных к соответствующим полям для привязки к экземпляру объекта из ORM. Например, учитывая объект в ORM, который имеет свойство «TaskName», я включил в свою форму WPF следующее:
<Label Grid.Column="0" Grid.Row="0" >
Name:
</Label>
<TextBox Name="txtName" Grid.Column="1" Grid.Row="0"
Text="{Binding TaskName, Mode=TwoWay}" AcceptsReturn="False"
MaxLines="1" />
Это в сочетании с назначением DataContext в коде:
var newRow = new OrmGeneratedClass();
// Populate default values on newRow, e.g.
detailWindow.DataContext = newRow;
detailWindow.ShowDialog();
может достаточно хорошо работать для создания новой строки. Все изменения, внесенные через форму, немедленно отражаются в базовом классе OrmGeneratedClass. Проблема в том, что нет немедленной поддержки отмены изменений, если, например, OrmGeneratedClass заполнен ранее сохраненными значениями.
Каков хороший дизайн для этого сценария, или я неправильно его спроектировал, прежде чем перейду к этому пункту? Я новичок в WPF и аспектах интеграции источника данных Sql Server / ORM. (Это личный проект, который я использую для изучения обеих технологий.)
У меня есть пара мыслей, и я вставлю их в ответы