Связывание MVVM с DataTable & DataView - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть окно WPF с некоторыми текстовыми полями, выпадающими списками и сеткой с использованием MVVM поля со списком и сетка привязаны к DataTable и DataViews, только значения selectedItem привязаны к модели

На данный момент используются следующие вспомогательные методы

void GetSelected()
{
  if ( SelectedDataRowView != null )
    obj.prop1 = (int)(SelectedDataRowView.Row["field1"]);
  else
    obj.prop1 = defaultValue1;
  if ( SelectedDataRow1 != null )
     obj.prop2 = (double)(SelectedDataRow["field2"]);
  if ( SelectedDataRow2!= null )
     obj.prop3 = (string)(SelectedDataRow2["field3"]);
  ...
}

/// and

void ToSelected()
{
 if ( TryFindDataRow("field1", obj.prop1, dv1, out drv1 ) 
   SelectedDataRowView = drv1;
 else
   SelectedDataRowView = null ;
  ...
}

Как вы можете видеть, это довольно уродливо, интересно, как его почистить !!

К вашему сведению, я не могу сейчас использовать EF и избавиться от DataTable / DataView - база данных не является сервером SQL

1 Ответ

0 голосов
/ 03 февраля 2012

Может быть, вы можете преобразовать ваши DataTable / DataRows в объекты POCO с соответствующими интерфейсами и поместить их в ObservableCollection, которые более дружественны к MVVM.Вы можете написать мапперы для этого или использовать такие фреймворки, как AutoMapper .Вы можете продолжать использовать то, что делаете, и просто использовать слой картографирования для преобразования их туда и обратно.

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