我一直在为某些UI组件使用wpf xceed第三方库。我非常喜欢在屏幕上显示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}}"/>
我如何在其视图模型中获取所选项目?
任何快速帮助都将受到高度赞赏!
提前致谢
答案 0 :(得分: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}" />
在您分别检查和取消选中项目时,将在源集合中添加和删除项目。