WPF中带有复选框的多选列表框

jjhzyzn0  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(286)

我有一个WPF项目,我希望有一个列表框,每个ListboxItem上都有复选框,并希望有一个ObservableCollection来存储选中的ListboxItem。
我需要将选中的字符从一个ObservableCollection移动到另一个ObservableCollection。
使用此代码,我可以选择多个复选框,但当我通过按钮触发命令MoveChar**(将字符移动到另一个ObservableCollection的命令)时,只有一个ListboxItem移动,我需要多次单击它才能移动所有选中的字符。

检视

<ListBox SelectionMode="Multiple" ItemsSource="{Binding Chars}" SelectedIndex="{Binding SelectedCharsIndex, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding SelectedChars, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid HorizontalAlignment="Stretch">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <TextBlock Text="{Binding Char}" HorizontalAlignment="Center" />
                <TextBlock Text="{Binding Description}" Grid.Column="1" HorizontalAlignment="Left"/>
                <CheckBox Grid.Column="2" IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}, Path=IsSelected}" HorizontalAlignment="Right" />
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

视图模型

第一次
当我把SelectedChars改为ObservableCollection<CharModel>时,它根本不起作用。在ViewModel中,我通过foreach迭代每个项目。

polkgigr

polkgigr1#

您正在将SelectedChars绑定到SelectedItem属性,该属性用于单选列表框,将仅返回单个对象,而不是集合.请尝试绑定到SelectedItems属性.确保“Items”部分是复数.您还需要将属性类型重构为SelectedObjectCollection,但它继承IList,以便您可以迭代相同得对象.

相关问题