Есть DataGrid все настройки по умолчанию, кроме AutoGenerateColumns, который установлен в false.
У DataGrid 3 колонки, одна из которых Template содержащая точно такую же по структуре DataGrid ( отличие только в привязке данных) всего в иерархии DataGrid получается 2 уровня, т.е. один основной и содержит в себе 2 DataGrida
При работе возникают следующие проблемы :
1) глючит вертикальная прокрутка, а именно если промотать в самый конец то видно что это не конец данных, но прокрутить ниже уже нельзя. А также ползунок прокрутки по мере прокрутки постоянно меняет свой размер ( как будто изменяется количество элементов , хотя оно постоянно ).
2) Данные на 2м уровне ( DataGrid который выводит список c_list ) — дублируются при отображении, причем если их выделять то дубликаты не выделяются вместе, выделяется только 1 из дубликатов, другой просто отображается как будто его не выделяли.
Т.е. вместо
Значение1
Значение2
выводится
Значение1
Значение1
Значение2
Значение2
при выделении выделяются только 1я и 3я строка а 2я и 4я — не реагируют никак на выделение.
3) Еще хотелось бы реализовать чтобы при клике на строке DataGridа производилось сворачивание/разворачивание ( Visibility=Visible/Collapsed) вложенных в эту строку DataGridов. Как это лучше реализовать ?
public class A
{
public string a1;
public string a2;
public B[] b_list;
}
public class B
{
public string b1;
public string b2;
public C[] c_list;
}
public class C
{
public string c1;
public string c2
}
public static A[] datasource = new A[]
{
new A{ ... },
....
new A{ ... },
}
при нажатии на кнопку делается
dataGrid1.ItemSource = datasource;
<DataGrid Name="dataGrid1" ... >
<DataGrid.Columns>
<DataGridTextColumn Binding={ a1}/>
<DataGridTextColumn Binding={ a2}/>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataGrid ItemsSource={Binding b_list}>
<DataGrid.Columns>
<DataGridTextColumn Binding={ b1}/>
<DataGridTextColumn Binding={ b2}/>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataGrid ItemsSource={Binding c_list}>
<DataGrid.Columns>
<DataGridTextColumn Binding={ c1}/>
<DataGridTextColumn Binding={ c2}/>
</DataGrid.Columns>
</DataGrid>
<DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>