Невозможно получить SelectedItems через Xceed CheckListBox с помощью MVVM

Я использовал стороннюю библиотеку wpf xceed для некоторых компонентов пользовательского интерфейса. Мне очень нравится, как CheckListBox отображается на экране. Но я не могу привязать selectedItems к какому-либо свойству в модели представления (сеттер никогда не срабатывает). Вот код -

Я использую поставщик данных для получения значений из перечисления -

 <UserControl.Resources>
    <ObjectDataProvider MethodName="GetValues" ObjectType="{x:Type sys:Enum}" x:Key="DeviceClassDataProvider">
        <ObjectDataProvider.MethodParameters>
            <x:Type TypeName="Model:HANDeviceClass" />
        </ObjectDataProvider.MethodParameters>
    </ObjectDataProvider>

And then the control has been declared something like this -

<ext:CheckListBox Focusable="False" SelectedMemberPath="{Binding IsChecked, UpdateSourceTrigger=PropertyChanged}" SelectedItemsOverride="{Binding SelectedDeviceGroups, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Grid.Row="1" Grid.RowSpan="7" Grid.Column="4" Padding="5" BorderThickness="0.8" BorderBrush="Gray" ItemsSource="{Binding Source={StaticResource DeviceClassDataProvider}}"/>

Как я получу выбранные элементы в своей модели просмотра?

Любая быстрая помощь будет высоко оценена!

заранее спасибо


person Shweta Goyal    schedule 01.03.2018    source источник


Ответы (1)


Должно работать при условии, что SelectedDeviceGroups является общедоступным свойством, которое возвращает ICollection<HANDeviceClass>:

public ICollection<HANDeviceClass> SelectedDeviceGroups { get; } = new ObservableCollection<HANDeviceClass>();

XAML:

<ext:CheckListBox ItemsSource="{Binding Source={StaticResource DeviceClassDataProvider}}"
                  SelectedItemsOverride="{Binding SelectedDeviceGroups}" />

<TextBlock Text="{Binding SelectedDeviceGroups.Count}" />

Элементы будут добавляться и удаляться из исходной коллекции по мере того, как вы отмечаете и снимаете флажки с элементов соответственно.

person mm8    schedule 01.03.2018
comment
Ну, у меня была точка останова в сеттере, и она никогда не попадала в нее. Похоже, геттер работает. Спасибо :) - person Shweta Goyal; 02.03.2018