无法使用MVVM通过Xceed CheckListBox获取SelectedItems

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法使用MVVM通过Xceed CheckListBox获取SelectedItems相关的知识,希望对你有一定的参考价值。

我一直在使用wpf xceed第三方库来处理一些UI组件。我非常喜欢在屏幕上显示CheckListBox的方式。但是我无法将selectedItems绑定到viewmodel中的任何属性(setter永远不会触发)。这是代码 -

我正在使用数据提供器从枚举中获取值 -

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

然后控件已声明如下 -

<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}}"/>

我如何在其视图模型中获取所选项?

任何快速帮助将非常感谢!

提前致谢

答案

应该工作提供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}" />

在您分别检查和取消选中项目时,将在源集合中添加和删除项目。

以上是关于无法使用MVVM通过Xceed CheckListBox获取SelectedItems的主要内容,如果未能解决你的问题,请参考以下文章

避免使用Xceed.Zip.QuickZip.Zip实用程序创建不必要的目录

使用带有 xceed 命名空间的 c# 在 ms word 中的特定位置插入图表

Xceed word获取段落字体属性

Xceed WPF Toolkit - BusyIndi​​cator - 在 C# 中创建动态加载消息,数据模板中的数据绑定

如何为 .NET 压缩配置 Xceed Real-Time 以允许非 ascii 文件名?

有迹可循之CheckList