2013-04-21 108 views
0

我是mvvm的新手,basicaly是我的第一次尝试。现在我有一个WPF窗口,ado.net连接到我的数据库,以及wcf服务来建立viewmodel和数据库之间的连接。问题是我不能将数据从我的视图添加到数据库。 这里的一些代码 我的WCF方法:与MVVM绑定的问题

[OperationContract] 
    public void ManageOrder(Order order, EntityState state) 
    { 
     using (var context = new SvLaserEntities()) 
     { 
      context.Attach(order); 
      context.ObjectStateManager.ChangeObjectState(order, state); 
      context.SaveChanges(); 
     } 

    } 
    [OperationContract] 
    public void ManageClient(Client client, EntityState state) 
    { 
     using (var context = new SvLaserEntities()) 
     { 
      context.Attach(client); 
      context.ObjectStateManager.ChangeObjectState(client, state); 
      context.SaveChanges(); 
     } 

    } 

一种结合按钮命令:为文本框的一个

public ICommand AddClient 
    { 
     get 
     { 
      if ((addClient == null) && (CurrentClient != null)) 
      { 
       addClient = new RelayCommand(() => this.client.ManageClientAsync(CurrentClient, EntityState.Added)); 
      } 
      return addClient; 
     } 
    } 

和XAML代码:

<TextBox HorizontalAlignment="Left" Height="28" 
         Margin="469,50,0,0" TextWrapping="Wrap" 
         VerticalAlignment="Top" Width="160" 
         Text="{Binding CurrentClient.Name, Mode=Default, UpdateSourceTrigger=PropertyChanged}" 
         /> 

直接的问题是,当我填充文本框并单击添加它们,我在这里捕获空引用异常,在客户端参数:

public void ManageClient(Client client, EntityState state) 

我在做什么错?

+0

实行的是它的客户端或实体状态一片空白?你可以发布你的客户类 – 2013-04-22 01:20:44

回答

1
在XAML

改变

模式属性,结合双向像

<TextBox Text="{Binding CurrentClient.Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /> 

请确保INotifyPropertyChanged的是在视图模型和模型

+0

尝试过,仍然会得到相同的异常:/ CurrentClient属性没有填充输入到文本框中的数据:(当它发送到数据库时它只是空的。 – 2013-04-21 14:04:39

+0

是否在视图模型和模型中实现了INotifyPropertyChanged – 2013-04-21 14:18:44

+0

是我做了,但在viewmodel中的onlu。模型我使用ado.net构建模型。 – 2013-04-21 14:24:25