2010-01-14 99 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