我有一个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
迭代每个项目。
1条答案
按热度按时间polkgigr1#
您正在将
SelectedChars
绑定到SelectedItem
属性,该属性用于单选列表框,将仅返回单个对象,而不是集合.请尝试绑定到SelectedItems属性.确保“Items”部分是复数.您还需要将属性类型重构为SelectedObjectCollection,但它继承IList,以便您可以迭代相同得对象.