@WSGlebKavash

DataGrid отображает только последнюю строчку. Как исправить?

Настроил отображение таблицы из базы данных в DataGrid. Однако, корректно отображается только последняя строка. В остальных строчках есть пустые ячейки. При попытке вывести данные в дебаггер всё выводится. В чём дело и как пофиксить?
Материалы:
Окно:
62bb5b67d29d6097684090.png
Структура базы данных:
62bb5b71dc4c4657537383.png
Код разметки XAML:
<DataGrid x:Name="Dg_Login" Grid.Row="1">
                <DataGrid.Columns>
                    <DataGridTextColumn Width="*" Header="Имя пользователя" Binding="{Binding User[0].username}"></DataGridTextColumn>
                    <DataGridTextColumn Width="*" Header="ФИО" Binding="{Binding User[0].FullName}"></DataGridTextColumn>
                    <DataGridTextColumn Width="*" Header="Результат входа" Binding="{Binding State1.State1}"></DataGridTextColumn>
                    <DataGridTextColumn Width="*" Header="Дата" Binding="{Binding Date, StringFormat=dd.MM.yyyy HH:mm:ss}"></DataGridTextColumn>
                </DataGrid.Columns>
            </DataGrid>
Код C#:
namespace DataQuantWPF.Pages
{
    /// <summary>
    /// Логика взаимодействия для AdminPage.xaml
    /// </summary>
    public partial class AdminPage : Page
    {
        public AdminPage()
        {
            InitializeComponent();
            Dg_Login.ItemsSource = AppData.DataQuantEntities.Login.ToList();
        }
    }
}
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
hekkaaa
@hekkaaa
C#/.NET Developer
Привет!
Я даже честно удивлен, что это у тебя работает вообще хоть как-то.
Не работает у тебя потому, что ты сам пишешь в разметке "выдай мне 0 элемент списка".
Обращаю внимание на Binding User[0].username. Причина в этом.

<DataGridTextColumn Width="*" Header="Имя пользователя" Binding="{Binding User[0].username}"></DataGridTextColumn>

 <DataGridTextColumn Width="*" Header="ФИО" Binding="{Binding User[0].FullName}"></DataGridTextColumn>


Чтобы все работало отлично в XAML тебе нужно передавить список объектов с нужными полями в строчку

<DataGrid x:Name="Dg_Login" Grid.Row="1" AutoGenerateColumns="False" ItemsSource="{Bunding CollectionDbObject}"> 
<DataGrid.Columns>
<DataGridTextColumn Width="*" Header="Имя пользователя" Binding="{Binding username}"></DataGridTextColumn>
<DataGridTextColumn Width="*" Header="ФИО" Binding="{Binding FullName}"></DataGridTextColumn>
<DataGridTextColumn Width="*" Header="Результат входа" Binding="{Binding State1}"></DataGridTextColumn>
 <DataGridTextColumn Width="*" Header="Дата" Binding="{Binding Date, StringFormat=dd.MM.yyyy HH:mm:ss}"></DataGridTextColumn>
</DataGrid.Columns>


Должно выглядеть примерно так
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы