2017-02-01 4 views
0

私はMVVMを使用して私の最初のアプリケーションを開発しています。私はコマンドボタンで立ち往生しています。ビュー内のWPFボタンコマンドがviewmodelのICommandに発砲しない

私が持っている私の見解で

:私の背後にあるコードで

<Button x:Name="btSave" Command="{Binding AddContactCommand}" Content="Save" HorizontalAlignment="Left" Margin="183,186,0,0" VerticalAlignment="Top" Width="75"/> 

は持っている:

public partial class ContactView : Window 
{ 
    private ContactViewModel contactVM; 

    public ContactView() 
    { 
     InitializeComponent(); 

     contactVM = new ContactViewModel(); 
     this.DataContext = contactVM; 
    } 
} 

私が持っているビューモデルでは:

public ICommand AddContactCommand { get; private set; } 

void AddContact() 
{ 
    ContactData ContactData = new ContactData(); 
    bSaved = ContactData.SaveContact("Theresa","Theresa","Theresa","Theresa");  
} 

AddContact()ビューでモデルは決して解雇されません。

私は間違っていますか?

+3

'AddContact()'メソッドは 'AddContactCommand'と何が関係していますか?プロパティ( 'AddContactCommand = new Something()')をどこでインスタンス化しますか? 'ICommand'の例については、[この回答](http://stackoverflow.com/a/1468830/1997232)を参照してください。 – Sinatr

+1

「AddContact」メソッドと「AddContactCommand」メソッドは、あなたのプログラムが少なくとも関係している限り、何らかの関係にあるとは限りません。 'AddContactCommand = new ClassThatImplementsCommand(AddContact)' ICommand実装がない場合、 'RelayCommand'のためのgoogleは基本的な実装であり、簡単な実装です。 –

+0

私は正しい方向に向いてくれてありがとう。私は現在、RelayCommandをsuugestedとして使用して解決しました。 –

答えて

0

DataContextが問題であると想定して確認してください。それはあなたが同じことを行う必要がありますが行う別のクラスだそうでない場合

DataContext = this; 

あなたのViewModelは背後コンストラクタ内のコードになっている場合には、以下を置く

DataContext = new MyViewModel(); 

少なくとも私はこれがあなたが投稿したものからのあなたの問題だと思います。

関連する問題