Как добавить DataGrid в ячейку?

238
21 апреля 2019, 21:30

На макете имеется DataGrid, у которого один столбец и одна ячейка. Как добавить ещё один (вложенный выходит) DataGrid в эту ячейку? Что-то такое:

Интересует способ xaml преимущественно (или дизайнер).

Answer 1

Итак, проблема решена. XAML разметка(таблица, один столбец, в ячейке вложенная таблица, в ней три столбца и некоторое количество строк):

 <DataGrid Name="table1" AutoGenerateColumns="False" CanUserAddRows="False">
            <DataGrid.Columns>
                <DataGridTemplateColumn Header="Поток номер 1" >
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <DataGrid ItemsSource="{Binding DataThreadsAll}" AutoGenerateColumns="False" CanUserAddRows="False">  
                                <DataGrid.Columns>
                                    <DataGridTextColumn Header="Ri" Binding="{Binding Ri}" />
                                    <DataGridTextColumn Header="Zi" Binding="{Binding Zi}" />
                                    <DataGridTextColumn Header="Tk" Binding="{Binding Tk}" />
                                </DataGrid.Columns>
                            </DataGrid>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>

И заполнение через код C#:

public class DataTable
{
    public List<DataThreads> DataThreadsAll { get; set; }
}
public class DataThreads
{
    public double Ri { get; set; }
    public double Zi { get; set; }
    public double Tk { get; set; }
}

И где-то создать коллекцию и присвоить её:

DataTable dt = new 
{
DataThreadsAll = new List<DataThreads>()
{
    new DataThreads() { Ri = 0, Zi = 0, Tk = 0},
    new DataThreads() { Ri = 1, Zi = 1, Tk = 1},
    new DataThreads() { Ri = 2, Zi = 2, Tk = 2}
 }
 };
 List<DataTable> dtList = new List<DataTable>() { dt };
 table1.ItemsSource = dtList;

Два класса - это и есть данные, причем свойство DataThreadsAll - это данные для вложенной таблицы. А для того, чтобы данные попали во вложенную таблицу, у нее надо установить свойство ItemsSource.

READ ALSO
C# Контроль времени выполнения Task и его отмена

C# Контроль времени выполнения Task и его отмена

получаю данный от Tcp сервера, если запрос длится более 1 сек, то завершаем Task ожидания получения ответа и выкидываем TimeoutException("

148
В C# windows form преобразование типа string в double и наоборот

В C# windows form преобразование типа string в double и наоборот

Как сделать что бы из textbox значения перевести в тип double и что бы читалась в числе и точка и запятая?И как вывести в label тип double?

179
Почему не получается десериализовать Json?

Почему не получается десериализовать Json?

Зашел в тупик с десериализацией Json, подскажите, почему?

143
BlockingCollection TryTake C#

BlockingCollection TryTake C#

Делаю так:

166