MVVM与DataTable绑定&数据视图

时间:2012-02-03 17:18:48

标签: c# .net wpf mvvm ado.net

我有一个WPF窗口,其中包含一些文本框,组合框和使用MVVM的网格 组合框和网格绑定到DataTable和DataViews,只有selectedItem值绑定到Model

截至目前,使用如下辅助方法

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 ;
  ...
}

正如你所看到的,它非常丑陋,想知道如何清理它!!

FYI可以使用EF&现在摆脱DataTable / DataView - db是非sql server

1 个答案:

答案 0 :(得分:0)

也许您可以使用适当的接口将DataTable / DataRows转换为POCO对象,并将它们放在更易于MVVM的ObservableCollection中。您可以编写映射器来实现此目的,或者使用AutoMapper之类的框架。您可以继续使用您的工作,只需使用映射器层来回转换它们。