我正在使用xaml和wpf。我有一个待办事项列表,它位于由集合填充的列表框中。我目前可以一次删除列表中的一个项目。我该如何编辑它才能一次选择和删除多个?
U可以使用SelectedItems ListBox属性并将其作为命令参数传递。然后在ViewModel中,您将能够获取每个选定的项目。
记住设置
SelectionMode="Extended" //or Multiple
在您的ListBox中。
示例:
这是我绑定到命令的按钮:
<Button Content="⇅"
ToolTip="Use ctr+click or shift+click to select more than one item"
Command="{Binding SwapVerticallyCommand}"
CommandParameter="{Binding ElementName=RightListBox, Path=SelectedItems}" />
如您所见,我将SelectedItems作为命令参数传递。然后在VM中执行此方法(类似于RemoveTodoItem(:
private void SwapVertically(IList obj)
{
if ( obj[0] is Slot first && obj[1] is Slot second )
{
(first.Target, second.Target) = (second.Target, first.Target); //swap places
}
}
IList作为参数传递,您可以从中获取值。因此,如果您的命令获得obj,则将其强制转换为IList,但更好的解决方案是定义从视图传递给命令的对象类型-使用IList而不是对象。