【问题标题】:Pass ListView's multiple SelectedItems as a command parameter将 ListView 的多个 SelectedItems 作为命令参数传递
【发布时间】:2014-12-05 12:19:20
【问题描述】:

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

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

然后在MyCommandExecute方法中:

var itemsList = (parameter as ObservableCollection<object>).Cast<FtpListItem>().ToList();

这个解决方案目前正在运行,但我想知道我是否可以以更好的方式从ListView 访问多个SelectedItems。可能在第一个表达式中我可以得到一个null 值。

【问题讨论】:

    标签: c# xaml mvvm command


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2015-04-11
      • 1970-01-01
      • 2015-05-16
      • 2012-03-25
      • 2016-01-30
      • 1970-01-01
      • 2011-09-06
      • 2013-07-15
      相关资源
      最近更新 更多