2014-07-25 37 views
1

好吧......這是星期五,天色已晚,我有點文思貝力得...無法從DataGrid的問題投.SelectedItems

代碼:

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(); 
    } 

填充一個DataGrid,其中我可以選擇項目。隨着一個按鈕(btnSelectSites)

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

,不明白爲什麼......這是我的理解是,因爲我申請到的ItemSource設置此IList<>,我將返回相同數據類型..

我該如何解決這個問題?

編輯:

已經嘗試過這裏的解決方案:Type list of selected items in a wpf datagrid它類似於其他的解決方案就在這裏......其中沒有工作。

+0

但是,我確實嘗試過這個問題的解決方案,並且它的答案讓我沒有 - 在哪裏。 – Kevin

+0

我剛剛開了V.S.自己測試一下。鏈接答案的最後一個選項應該適合你。這是@GrantWinney在他的回答中所做的,我可以證實它爲我工作。 –

回答

6

使用此相反,鑄造收集原始類型:

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

在鏈接的答案,list將(在你的情況下)dg_Sites.SelectedItems集合。

如果還沒有,您可能還需要將using System.Linq;添加到班級的頂部。

+1

'(IList )'雖然是多餘的... – McGarnagle

+0

'錯誤\t 1'System.Collections.IList'不包含'Cast'的定義,並且沒有擴展方法'Cast'接受第一個參數可以找到類型'System.Collections.IList'(你是否缺少使用指令或程序集引用?)' – Kevin

+0

我是一個工具。我需要添加'使用System.Linq;' – Kevin