我设法通过这种方式将多个选定项目作为参数传递给命令。 在我看来:
<Button Command="{Binding MyCommand}"
CommandParameter="{Binding SelectedItems, ElementName=MyListView}" />
然后在MyCommand
的{{1}}方法中:
Execute
此解决方案现在正在运行,但我想知道我是否可以更好地从var itemsList = (parameter as ObservableCollection<object>).Cast<FtpListItem>().ToList();
访问多个SelectedItems
。可能在第一个表达式中,我可以获得ListView
值。
答案 0 :(得分:1)
您可以期望参数为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
实现。以下博客文章详细讨论了您的问题和可能的解决方案: