将列表视图的多个选定项作为命令参数传递
本文关键字:命令 参数传递 视图 列表 | 更新日期: 2023-09-27 18:33:17
我设法以这种方式将多个选定项目作为参数传递给命令。在我看来:
<Button Command="{Binding MyCommand}"
CommandParameter="{Binding SelectedItems, ElementName=MyListView}" />
那么在MyCommand
的Execute
方法中:
var itemsList = (parameter as ObservableCollection<object>).Cast<FtpListItem>().ToList();
这个解决方案目前有效,但我想知道我是否可以以更好的方式从ListView
访问多个SelectedItems
。可能在第一个表达式中,我可以得到一个null
值。
您可以期望该参数是一个IEnumerable
。我会选择以下内容:
IEnumerable enumerable = parameter as IEnumerable;
if (enumerable == null)
throw new ArgumentException("parameter has to be an IEnumerable.", "parameter");
var items = enumerable.OfType<FtpListItem>().ToArray();
或者,您可以尝试一些自定义ICollectionView
实现。以下博客文章详细讨论了您的问题和可能的解决方案:
MVVM 和多项选择部分 I、II、III、IV