Datagrid在另一个datagrid里面

时间:2012-03-22 12:39:08

标签: c# silverlight datagrid

我需要在另一个datagrid中显示一个datagrid。我通过使用RowDetailsTemplate并在其中添加数据网格来完成此操作。但主要问题是,我需要同时显示多个内部网格。更改所选项目时,不显示上一个选定项目的内部数据网格。任何建议:(

我正在使用扩展器控件来显示/隐藏细节。当打开扩展器控件时,我将RowDetailstemplate的visiblity更改为true。

当所选项目发生更改时,如果展开展开器,则当前所选行的RowDetailsTemplate仅可见。

2 个答案:

答案 0 :(得分:0)

您可以使用DataGridRow.DetailsVisibility属性控制每行的行详细信息的可见性。

也许您还需要将DataGrid.RowDetailsVisibilityMode更改为除VisibleWhenSelected

之外的其他值

答案 1 :(得分:0)

找到答案,

   private void Expander_Expanded(object sender, RoutedEventArgs e)
    {
    int rowIndex = this.DataGridForEvents.SelectedIndex;
    List<DataGridRow> rows = GetRows();
    rows[rowIndex].DetailsVisibility = Visibility.Visible;
    }

private void Expander_Collapsed(object sender, RoutedEventArgs e)
{
int rowIndex = this.DataGridForEvents.SelectedIndex;
List<DataGridRow> rows = GetRows();
rows[rowIndex].DetailsVisibility = Visibility.Collapsed;
}



public List<DataGridRow>  GetRows()
{
List<DataGridRow> rows = new List<DataGridRow>();
foreach (var rowItem in this.DataGridForEvents.ItemsSource)
{
this.DataGridForEvents.ScrollIntoView(rowItem, this.DataGridForEvents.Columns.Last());
FrameworkElement el = this.DataGridForEvents.Columns.Last().GetCellContent(rowItem);
DataGridRow row = DataGridRow.GetRowContainingElement(el.Parent as FrameworkElement);
if (row != null)
rows.Add(row);
}
return rows;
}