Событие или команда, чтобы знать каждый раз, когда элемент выбран из Checkedlistbox с помощью mvvm,wpf

Я использую MVVM с WPF... У меня есть флажок списка с некоторыми элементами.... каждый раз, когда проверяется один элемент, я хочу, чтобы этот элемент использовался во Viewmodel.... Есть ли свойство, команда или событие, чтобы я мог используйте это, чтобы узнать проверенный элемент...

Вот мой хамл...

   <ListBox Grid.Row="9" Height="49" HorizontalAlignment="Left" Margin="0,30,0,0"      Name="aasdasd" VerticalAlignment="Top" Width="205" SelectionMode="Multiple" 
             ItemsSource="{Binding userlist}" Grid.Column="1">
       <ListBox.ItemTemplate>
            <DataTemplate>
                <CheckBox Name="chkuser" Content="{Binding Path=useritem}" IsChecked="{Binding IsChecked,Mode=TwoWay}" />
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

Спасибо

2 ответа

Вы привязаны к IsChecked на вашей модели, так что ваша viewModel может просто подписаться на PropertyChanged событие для этого элемента и выполнять любое действие, которое вы хотите, когда это свойство изменяется

public MyViewModel()
{
    userList.CollectionChanged += userList_CollectionChanged;
}

void userList_CollectionChanged(object sender, CollectionChangedEventArgs e)
{
    if (e.NewItems != null)
        foreach(MyItem item in e.NewItems)
            item.PropertyChanged += MyItem_PropertyChanged;

    if (e.OldItems != null)
        foreach(MyItem item in e.OldItems)
            item.PropertyChanged -= MyItem_PropertyChanged;
}

void MyItem_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
    if (e.PropertyName == "IsChecked")
    {
        // Do whatever here
    }
}

Если предметы в userList воплощать в жизнь INotifyPropertyChanged модель вашего представления может подписаться на PropertyChanged событие для каждого элемента в списке (убедившись, что оно использует слабые события или правильно отписывает событие) и наблюдатель, когда IsChecked свойство изменено на true,

Кроме того, вы можете использовать триггер события на Checked событие для выполнения команды в вашей модели представления.

Другие вопросы по тегам