Получить количество элементов при выборе checkbox WPF MVVM
Доброго времени суток!
У меня есть ItemsControl к которому биндится ObservableCollection. В коллекции к примеру есть Name, Path и isChecked. Как можно сделать, если CheckBox isChecked == true выводилось общее количество файлов в папке (выбранных isChecked) и отображалось в TextBlock. Пробовал делать так:
private string _selectCountReg;
public string SelectCountRegystry
{
get => _selectCountReg;
set
{
_selectCountReg = value;
OnPropertyChanget(nameof(SelectCountRegystry));
}
}
public ObservableCollection<GroupModel> groupModels { get; set; } //Коллекция биндится к ItemsControl
groupModels = new ObservableCollection<GroupModel>(GetInfo(получаем список файлов в папке));
groupModels.CollectionChanged += GroupModels_CollectionChanged;
private void GroupModels_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
if (e.OldItems != null)
{
foreach (INotifyPropertyChanged item in e.OldItems)
item.PropertyChanged -= Update;
}
if (e.NewItems != null)
{
foreach (INotifyPropertyChanged item in e.NewItems)
item.PropertyChanged += Update;
}
}
public void Update(object sender, PropertyChangedEventArgs e)
{
SelectCountRegystry = groupModels.Count(x => x.IsChecked).ToString();
}
XAML ItemsControl
<TextBlock Text="{Binding SelectCountRegystry, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
<ItemsControl ItemsSource="{Binding groupModels, IsAsync=True}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Background="{StaticResource BackgroundWhiteBrush}">
<Grid>
<Expander IsExpanded="{Binding ElementName=toggleButton, Path=IsChecked, UpdateSourceTrigger=Explicit, Mode=TwoWay}" Style="{StaticResource MyCoolExpanderStyle}">
<Expander.Header>
<StackPanel Orientation="Horizontal">
<CheckBox
Content="{Binding Name, Converter={local:ValueTextConverter}}"
Foreground="{StaticResource CustomTextBrush}"
IsChecked="{Binding IsChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
</Expander.Header>
</Grid>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
Model
public class GroupModel : BaseViewModel
{
public string Name { get; set; }
public ObservableCollection<DecreeModel> items { get; set; }
public bool IsChecked { get; set; }
}
но ничего не отображается в TextBlock. Класс и модель реализует INPC. Скорее всего делаю не правильно. Подскажите.