与MVVM绑定的麻烦

时间:2013-04-21 13:39:20

标签: c# wpf wcf mvvm ado.net

我是mvvm的新手,基本上是我的第一次尝试。现在我有一个WPF窗口,ado.net连接到我的数据库,wcf服务在viewmodel和数据库之间建立连接。问题是我无法将数据从视图添加到数据库。 这里有一些代码 我的wcf方法:

[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)

我做错了什么?

1 个答案:

答案 0 :(得分:1)

你的xaml中的

改变了

绑定到TWOway的模式属性,如

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

请确保在viewmodel和model中实现了INotifyPropertyChanged