2012-10-04 33 views
6

Tôi có một hộp danh sách có chứa danh sách người. Khi người dùng nhấp vào một mục, viewModel sẽ đặt đối tượng currentPerson thành Object mà người dùng đã nhấp vào.Sự kiện đã thay đổi lựa chọn bằng MVVM

Tôi phải sử dụng một ViewModel cho điều này, vì vậy không có mã nào bên trong MainWindow.xaml.xs. Bất kỳ ý tưởng làm thế nào để giải quyết điều này?

Trả lời

6

Điều đó rất đơn giản:

Thêm một tài sản CurrentPerson để ViewModel của bạn và gắn nó vào SelectedItem tài sản của ListBox.

Something như thế này:

Xem mẫu:

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

     NotifyOfPropertyChange("CurrentPerson"); 
    } 
} 

Xem:

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

+1: Tôi thường gắn với SelectedValue tuy nhiên, tôi nhớ gặp vấn đề với tài sản SelecteItem. –

+2

@Baboon: Đó không phải là ý hay. 'SelectedItem' là toàn bộ đối tượng. 'SelectedValue' là một phần của đối tượng được xác định bởi' SelectedValuePath'. Nếu bạn có một số vấn đề với 'SelectedItem' trong quá khứ, thì rất có thể đó là một thứ khác. 'SelectedItem' chắc chắn là thuộc tính đúng. –

+0

Làm việc tuyệt vời, cảm ơn bạn! – Goot

Các vấn đề liên quan