c# - 无法从 DataGrid 问题中转换 .SelectedItems

标签 c# wpf datagrid .net-4.5

好吧...今天是星期五,时间不早了,我有点累了...

代码:

public partial class SiteSelection : Window
{

    private IList<IISBrowser.IISSiteList> _siteList;

    public IList<IISBrowser.IISSiteList> SelectedItemsList { get; set; }

    public SiteSelection(IList<IISBrowser.IISSiteList> _sl)
    {
        InitializeComponent();
        _siteList = _sl;
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        this.dg_Sites.ItemsSource = _siteList;
    }

    private void btnSelectSites_Click(object sender, RoutedEventArgs e)
    {
        SelectedItemsList = (IList<IISBrowser.IISSiteList>)dg_Sites.SelectedItems;
        this.Close();
    }

填充数据网格,我可以在其中选择项目。使用按钮 (btnSelectSites)

我不断收到 Unable to cast object of type 'System.Windows.Controls.SelectedItemCollection' to type 'System.Collections.Generic.IList 1[Backup.S3.Store.IISBrowser+IISSiteList]'.

并且不明白为什么...据我所知,因为我正在设置此 IList<>当应用到 ItemSource 时,我将返回相同的数据类型..

我该如何解决这个问题?

编辑:

已经尝试过这里的解决方案:Type list of selected items in a wpf datagrid这与此处的其他解决方案类似......没有一个有效。

最佳答案

改用它,将集合转换为原始类型:

SelectedItemsList = dg_Sites.SelectedItems
                            .Cast<IISBrowser.IISSiteList>()
                            .ToList();

在链接的答案中,list 将是(在您的情况下)dg_Sites.SelectedItems 集合。

您可能还需要将 using System.Linq; 添加到您的类的顶部(如果它还没有的话)。

关于c# - 无法从 DataGrid 问题中转换 .SelectedItems,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24964308/

相关文章:

c# - 当 ObservableCollection 中的属性更改时引发事件

wpf - 如何将 wpf datagrid 配置为具有相对大小并在扩展列时水平滚动?

c# - 确定数字是否在二进制序列中 1 2 4 8 16 32 64 等

c# - WPF 应用程序的最佳本地数据库

c# - 无法更改 WPF 菜单的背景颜色

WPF 如何从列表填充环绕面板

c# - async/await 是否适契约(Contract)时受 IO 和 CPU 限制的方法?

c# - 获取 ListView 子项的值

c# - Blazor-Component 继承自 BaseClass

c# - 使用 MVVM 单击 DataGrid 单个单元格行和列