2010-01-14 100 views
2

我正在使用Silverlight實現文件上傳工具。在這我可以瀏覽文件,當我選擇一個文件,然後它綁定到一個數據網格。在datagrid中,我有一個帶有按鈕的模板列,用於刪除數據網格中的特定項目和數據網格的ItemSource,它是List<>在TemplateColumn按鈕上點擊訪問Datagrid行點擊

我有一個類UploadedFiles如下。

public class UploadedFiles 
{ 
    public FileInfo FileInf{get;set;} 
    public int UniqueID{get;set;} 
    public string FileName{get;set;} 
    public string FileExtension{get;set;} 
    public long FileSize{get;set;} 
} 

我使用一個DataGrid中包含一個TemplateColumn中使用的ItemSource設置爲List<UploadedFiles>

<data:DataGridTemplateColumn Width="100"> 
    <data:DataGridTemplateColumn.CellTemplate> 
    <DataTemplate> 
     <Button Click="btn_Click" Content="Del" Width="45"/> 
    </DataTemplate> 
    </data:DataGridTemplateColumn.CellTemplate> 
    </data:DataGridTemplateColumn> 

和按鈕單擊事件處理程序是

private void btn_Click(object sender, System.Windows.RoutedEventArgs e) 
{ 
    /* I need to access the particular list item based on the datagrid 
     row in which the clicked button resides.*/ 
} 

我需要訪問特定列表基於單擊按鈕所在的datagrid行的項目,並從List<UploadedFiles>中刪除項目並重新綁定數據網格。

感謝

回答

2

兩件事情需要在這裏看看:

首先,拿到個人UPLOADEDFILES反對,投發件人一個按鈕(或FrameworkElement的),並訪問DataContext屬性。 DataContext將成爲UploadedFiles行(您將需要再次從對象中進行投射)。

其次,而不是從列表中刪除項目和重新綁定,你有沒有考慮使用ObservableCollection?如果使用它,刪除該行將自動將其從DataGrid中刪除,而不需要您重新綁定。

private void btn_Click(object sender, System.Windows.RoutedEventArgs e) 
{ 
    var uploadedFiles = (UploadedFiles)((FrameworkElement)sender).DataContext; 

    //access collection and remove element 
} 
+0

+1爲答案@Gareth。 – rahul 2010-01-14 07:26:41