Событие или команда, чтобы знать каждый раз, когда элемент выбран из 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
событие для выполнения команды в вашей модели представления.