2012-10-04 24 views
6

リストボックスに人のリストが含まれています。 ユーザーが項目をクリックすると、viewModelはcurrentPersonオブジェクトをユーザーがクリックしたオブジェクトに設定する必要があります。選択が変更されましたMVVMを使用しているイベント

私はこのためにViewModelを使用する必要があります。したがって、は、MainWindow.xaml.xsの中にコードはありません。どのようにこれを解決するためのアイデアですか?

答えて

6

非常に簡単です:

は、あなたのViewModelにプロパティCurrentPersonを追加し、リストボックスのSelectedItemプロパティにバインドします。このような

何か:

ビューモデル:

public Person CurrentPerson 
{ 
    get { return _currentPerson; } 
    set 
    { 
     if(value == _currentPerson) return; 
     _currentPerson = value; 

     NotifyOfPropertyChange("CurrentPerson"); 
    } 
} 

ビュー:

<ListBox SelectedItem="{Binding CurrentPerson}" ...> 
+0

1:私は通常、しかしSelectedValueのに特異的に結合する、私はSelecteItemプロパティで問題を抱えて覚えています。 –

+2

@Baboon:それは良い考えではありません。 'SelectedItem'はオブジェクト全体です。 'SelectedValue'は' SelectedValuePath'によって定義されたオブジェクトの一部です。過去に 'SelectedItem'にいくつかの問題があった場合、それは他のものでした。 'SelectedItem'は間違いなく正しいプロパティです。 –

+0

偉大な作業、ありがとう! – Goot

関連する問題