2012-03-22 5 views
0

Мне нужно показать datagrid внутри другого datagrid. Я сделал это, используя RowDetailsTemplate и добавив в него datagrid. Но главная проблема заключается в том, что мне нужно одновременно отображать несколько внутренних сеток. Когда выбранный элемент изменен, внутренний datagrid предыдущего выбранного элемента не отображается. Любые предложения :(Datagrid внутри другого datagrid

Я использую управление расширителя, чтобы показать/скрыть детали. При открытии управления расширитель, я меняюсь visiblity в RowDetailstemplate к истинным.

Если выбранный элемент изменяется, RowDetailsTemplate тока Выбранная строка быть только если я расширяю расширитель.

ответ

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; 
} 
Смежные вопросы