Привязка ItemsSource ListView не требует изменений в источнике - PullRequest
0 голосов
/ 24 июня 2011

Я использую WPF и Mvvm, и мой ListView имеет свой ItemSource, связанный с ICollectionView.Как мне обработать событие изменения выбранного элемента?

Изначально у меня была привязка ItemSrid ItemSrid к тому же ICollectionView и я установил событие CurrentChanged коллекции.Все работает нормально, но это не относится к ListView.

Ответы [ 2 ]

4 голосов
/ 24 июня 2011

Все, что вам нужно сделать, как упомянул Томас, - это связать атрибут SelectedItem списка со свойством в модели представления. Чтобы было понятно, вот пример.

Вот мой взгляд

   <Grid x:Name="LayoutRoot" Background="White">
        <ListView ItemsSource="{Binding Contacts}" SelectedItem="{Binding SelectedContact, Mode=TwoWay}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Name}" />
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </Grid>   

А вот и моя ViewModel

public class MainViewModel: ViewModelBase
{
    ObservableCollection<ContactViewModel> contacts;
    ContactViewModel selectedContact;

    public ContactViewModel SelectedContact
    {
        get { return selectedContact; }
        set {
            selectedContact = value;
            base.OnPropertyChanged("SelectedContact"); 
        }
    } 

    public ObservableCollection<ContactViewModel> Contacts
    {
        get { return contacts; }
        set { 
            contacts = value;
            base.OnPropertyChanged("Contacts"); 
        }
    }
}

Каждый раз, когда вы пытаетесь изменить выбор в списке, вы входите в установщик SelectedContact.

set 
{ 
     contacts = value;
     base.OnPropertyChanged("Contacts"); 
}

Благодаря этому вы узнаете, что выбранный контакт изменился.

Используя свойство SelectedContact, вы также узнаете, какой элемент в вашей коллекции выбран.

Вы также можете привязать свойство Collection в ViewModel к атрибуту SelectedItems ListView, если вы хотите реализовать множественный выбор.

3 голосов
/ 24 июня 2011

Просто привяжите SelectedItem ListView к свойству вашей ViewModel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...