Binding CollectionViewSource to Listbox ItemSource

Поставили задачу группировать данные в wpf форме.По началу, когда я пытался сделать для Listbox, выскакивало сообщение

Операция недопустима, когда ItemsSource используется. Вместо этого получите доступ и измените элементы с помощью ItemsControl.ItemsSource.

XAML-код был следующий:

<UserControl x:Class="CollectingSystemData.Views.ChooseIndicatorsView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:CollectingSystemData.Views"
             xmlns:vm="clr-namespace:CollectingSystemData.ViewModels" d:DataContext="{d:DesignInstance Type=vm:ChooseIndicatorsViewModel}"
             mc:Ignorable="d" 
             d:DesignHeight="600" d:DesignWidth="400"
             Height="600" Width="375" 
             Background="White">
    <UserControl.Resources>
        <vm:ChooseIndicatorsViewModel x:Key="ChooseIndicatorsViewModel"/>
    </UserControl.Resources>
    <StackPanel DataContext="{StaticResource ChooseIndicatorsViewModel}">
        <TextBlock FontSize="24" Margin="0,15,0,20">
            <Bold>Собираемые показатели</Bold>
        </TextBlock>
        <ListBox ItemsSource="{Binding AllIndicators}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <CheckBox IsChecked="{Binding IsSelected}" Content="{Binding Name}" Command="{Binding DataContext.SelectModuleCommand, RelativeSource={RelativeSource AncestorType=ListBox}}" CommandParameter="{Binding}"/>
                </DataTemplate>
            </ListBox.ItemTemplate>
            <GroupStyle>
                
            </GroupStyle>
        </ListBox>
        <Button Content="Начать сбор данных" Command="{Binding CollectionDataCommand}"/>
    </StackPanel>
</UserControl>

Код ViewModel небольшой, просто объявлены свойства и в конструкторе задается значение для свойства AllIndicators:

public class ChooseIndicatorsViewModel : ViewModelBase
    {
        public ChooseIndicatorsViewModel()
        {
            ModulesController = new ModulesController();
            ModulesController.LoadModules();
            AllIndicators = new ObservableCollection<Indicator>();
            foreach (IPlugin module in ModulesController.Modules)
            {
                foreach(Indicator indicator in module.Indicators)
                {
                    AllIndicators.Add(indicator);
                }
            }
            SelectedIndicators = new List<Indicator>();
            CollectionDataCommand = new LambdaCommand(OnCollectionData, CanCollectionData);
            SelectModuleCommand = new LambdaCommand(OnSelectModule);
        }

        private void OnSelectModule(object parameter)
        {
            //код опущен
        }

        private bool CanCollectionData(object parameter)
        {
            //код опущен
        }

        private void OnCollectionData(object parameter)
        {
            //код опущен
        }

        public ModulesController ModulesController { get; }
        public ICommand CollectionDataCommand { get; }
        public ICommand SelectModuleCommand { get; }
        public ObservableCollection<Indicator> AllIndicators { get; }
        public List<Indicator> SelectedIndicators { get; }
        public string Group { get; set; } = "test";
    }

Далее нашел в интернете такой элемент как CollectionViewSource, он используется как ресурс и далее идет его привязка к ItemSource

<UserControl.Resources>
        <vm:ChooseIndicatorsViewModel x:Key="ChooseIndicatorsViewModel"/>
        <CollectionViewSource x:Key="GroupCollectionViewSource" Source="{Binding AllIndicators}">
            <!--<CollectionViewSource.GroupDescriptions>
                <PropertyGroupDescription PropertyName="Group"/>
            </CollectionViewSource.GroupDescriptions>-->
        </CollectionViewSource>
    </UserControl.Resources>
....
<ListBox ItemsSource="{Binding Source={StaticResource GroupCollectionViewSource}}"/>

Остальное содержимое Listbox осталось прежним. Но данные все-равно не выводятся. Хотя если делать без всяких группировок, а просто привязать AllIndicators из ChooseIndicatorsViewModel данные спокойно выводились:введите сюда описание изображения

Подскажите, что я не так сделал?


Ответы (0 шт):