0

私はmvvmが初めてで、基本的には初めての試みです。現在、WPF ウィンドウ、データベースに接続するための ado.net、およびビューモデルとデータベースを接続するための wcf サービスがあります。問題は、ビューからデータベースにデータを追加できないことです。ここにいくつかのコード私の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;
        }
    }

テキストボックスの 1 つの 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}"
                         />

直接的な問題は、テキストボックスに入力してクリックして追加するときに、ここでクライアントパラメーターで null 参照例外をキャッチしていることです。

public void ManageClient(Client client, EntityState state)

私は何を間違っていますか?

4

1 に答える 1

1

あなたのxamlで変更します

TWOway にバインドするモード属性

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

ビューモデルとモデルに INotifyPropertyChanged が実装されていることを確認してください

于 2013-04-21T14:00:39.353 に答える