2012-10-04 20 views
6

Bir kişi listesi içeren bir liste kutusu var. Kullanıcı bir öğeyi tıklattığında, viewModel, currentPerson nesnesini kullanıcının tıklattığı nesneye ayarlamalıdır.Seçim Değiştirilen Olay MVVM kullanarak

Bunun için bir ViewModel kullanmalıyım, bu nedenle , MainWindow.xaml.xs içinde hiçbir kod kullanmayın. Bunun nasıl çözüleceğine dair bir fikrin var mı? Çok basit

cevap

6

:

sizin ViewModel bir özelliği CurrentPerson ekleyin ve ListBoxBindingContextChanged SelectedItem özelliğine bağlamak. Böyle

şey:

Görünüm Modeli:

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

     NotifyOfPropertyChange("CurrentPerson"); 
    } 
} 

Görünüm:

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

+1: Genellikle i SelecteItem özelliği sorun yaşadıklarını hatırlamak olsa SelectedValue bağlamak. –

+2

@Baboon: Bu iyi bir fikir değil. SelectedItem 'tüm nesnedir. "SelectedValue", "SelectedValuePath" ile tanımlanan nesnenin parçasıdır. Geçmişte 'SelectedItem' ile bazı problemler yaşarsanız, büyük olasılıkla başka bir şeydi. 'SelectedItem' kesinlikle doğru özelliktir. –

+0

Harika çalışıyor, teşekkürler! – Goot