Я создаю datagrid в своем приложении WPF. ItemSource
Datagrid ограничен коллекцией IEnumerable
. Я не являюсь ViewModel моего проекта. Когда я привязываю свой источник данных datagrid к datagrid, я получаю заголовки столбцов и значения Row на лету.Динамические заголовки столбцов и количество заголовков в Datagrid WPF
Я не знаю заголовков. Это может быть что угодно. Мне нужно отобразить подробную информацию о выбранной строке в datagrid в сетке.
Для этого мне нужно бинг SelectedItem.HeaderName в текстовый блок сетки. Но в чем проблема? Я не знаю имя заголовка. Поэтому я не могу просто жестко кодировать SelectedItem.Headername
.
И количество столбцов может отличаться. Таким образом, мое подробное представление также должно содержать динамическое число заголовков заголовков с его соответствующим значением, когда выбрана строка моего набора данных.
На данный момент я записал и увидел результат в моем xaml, как показано ниже. потому что для конкретного файла я знаю, их соответствующие заголовки столбцов,
<Label HorizontalAlignment="Stretch"
VerticalAlignment="Center"
Grid.Row="0"
Grid.Column="0">Header2:
</Label>
<TextBlock Grid.Row="0"
Grid.Column="1"
Name="Header2"
Text="{Binding SelectedItem.date, ElementName=dataGrid1}"
Width="auto"
Height="auto"
HorizontalAlignment="Stretch"
VerticalAlignment="Center" />
<Label Grid.Row="0"
Grid.Column="2"
VerticalAlignment="Center">Header3:</Label>
<TextBlock Grid.Row="0"
Grid.Column="3"
Name="username"
Text="{Binding SelectedItem.Header3, ElementName=dataGrid1}"
Width="auto"
Height="auto"
HorizontalAlignment="Stretch"
VerticalAlignment="Center" />
<Label Grid.Row="0"
Grid.Column="4"
VerticalAlignment="Center">Header4:</Label>
<TextBlock Grid.Row="0"
Grid.Column="5"
Name="level"
Text="{Binding SelectedItem.header4, ElementName=dataGrid1}"
Width="auto"
Height="auto"
HorizontalAlignment="Stretch"
VerticalAlignment="Center" />
<Label Grid.Row="1"
Grid.Column="0"
VerticalAlignment="Center">Header5:</Label>
<TextBlock Grid.Row="1"
Grid.Column="1"
Name="logger"
Text="{Binding SelectedItem.header5, ElementName=dataGrid1}"
Width="auto"
Height="auto"
HorizontalAlignment="Stretch"
VerticalAlignment="Center" />
<Label Grid.Row="1"
Grid.Column="2"
VerticalAlignment="Center">Headr6:</Label>
<TextBlock Grid.Row="1"
Grid.Column="3"
Name="thread"
Text="{Binding SelectedItem.header6, ElementName=dataGrid1}"
Width="auto"
Height="auto"
HorizontalAlignment="Stretch"
VerticalAlignment="Center" />
Поскольку я являюсь новичок я не мог понять, как это сделать. Буду рад, если вы попытаетесь мне помочь. И предложите некоторые концепции, которые мне нужно прочитать, связанные с этой динамической генерацией столбцов, Count, назначение динамических заголовков столбцов другому элементу управления в пользовательском интерфейсе. Спасибо заранее!
Если я вас понимаю хорошо, даже контент Grid, отображающий информацию DataGrid, должен быть динамическим, не так ли? в этом случае лучший способ сделать это - позади кода. – HichemSeeSharp
@HichemC: да, правильно .. :) – BinaryMee