将ListView的多个SelectedItems作为命令参数传递

时间:2014-12-05 12:19:21

标签: c# xaml mvvm command

我设法通过这种方式将多个选定项目作为参数传递给命令。 在我看来:

<Button Command="{Binding MyCommand}" 
        CommandParameter="{Binding SelectedItems, ElementName=MyListView}" />

然后在MyCommand的{​​{1}}方法中:

Execute

此解决方案现在正在运行,但我想知道我是否可以更好地从var itemsList = (parameter as ObservableCollection<object>).Cast<FtpListItem>().ToList(); 访问多个SelectedItems。可能在第一个表达式中,我可以获得ListView值。

1 个答案:

答案 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实现。以下博客文章详细讨论了您的问题和可能的解决方案:

MVVM and multiple selection part IIIIIIIV