2016-12-07 2 views
0

, поэтому я работаю над приложением, которое извлекает данные из базы данных, и я хочу отобразить его в DataGrid с настраиваемыми столбцами, которые я создал.Wpf DataGrid показывает только пустые строки

XAML:

<DataGrid x: Name = "dataGridAddedAgents" Grid.Column = "0" Grid.ColumnSpan = "7" ItemsSource = "{Binding}" HorizontalAlignment = "Stretch" Margin = "10,0" Grid.Row = "3" VerticalAlignment = "Top" AutoGenerateColumns = "False" IsReadOnly = "True" > 
<DataGrid.Columns>    
    <DataGridTextColumn Binding = "{Binding Path=Id}" Width = "0.25*" Header = "Id" CanUserResize = "False" CanUserReorder = "False" Foreground = "{x:Null}" />      
    <DataGridTextColumn Binding = "{Binding Path=FirstName}" Width = "0.15*" Header = "First name" CanUserResize = "False" CanUserReorder = "False" Foreground = "{x:Null}" />           
    <DataGridTextColumn Binding = "{Binding Path=LastName}" Width = "0.15*" Header = "Last name" CanUserResize = "False" CanUserReorder = "False" Foreground = "{x:Null}" />              
    <DataGridTextColumn Binding = "{Binding Path=Email}" Width = "0.20*" Header = "Email" CanUserResize = "False" CanUserReorder = "False" Foreground = "{x:Null}" />                
    <DataGridTextColumn Binding = "{Binding Path=Username}" Width = "0.15*" Header = "Username" CanUserResize = "False" CanUserReorder = "False" Foreground = "{x:Null}" />       
    <DataGridTextColumn Width = "0.10*" ClipboardContentBinding = "{x:Null}" Header = "Remove" CanUserResize = "False" CanUserReorder = "False" Foreground = "{x:Null}" />                      
</DataGrid.Columns>                 
</DataGrid> 

и здесь C# код, где я пытаюсь поместить данные в DataGrid

response = await client.GetAsync("api/user/agents"); 
     listOfAgents = await response.Content.ReadAsAsync<ICollection<ApplicationUserModel>>();       
     dataGridAddedAgents.ItemsSource = listOfAgents; 

Я имею проверку с отладчиком и я загрузить данные правильно в listOfAgents. Когда я запускаю программу, DataGrid показывает правильное количество строк, но все ячейки пустые.

редактировать:

public class ApplicationUserModel 
{ 
    public string Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string GuestIdentification { get; set; } 
    public string Email { get; set; } 
    public string Username { get; set; } 
    public string Password { get; set; } 
} 

Класс ApplicationUserModel выглядит следующим образом. Я использую его тоже, пишу в базу данных, и он работает Soulutin:

удаление Foreground = "{x: Null}" из столбцов в DataGrid исправлено. спасибо @ mm8 за помощь

+2

Вы назначаете ItemsSource как в своем коде, так и через 'ItemsSource =" {Binding} "в вашем XAML. Вероятно, это является причиной проблемы. Удалите привязку и посмотрите, работает ли она. – ChrisF

+1

Или просто установите корректное привязку ItemsSource в xaml – TheLethalCoder

+1

@ TheLethalCoder. Я думал об этом, но тогда могут возникнуть другие проблемы, требующие сортировки. Удаление привязки (даже временно) покажет, было ли это источником проблемы или нет. Как только вы подтвердите, что вы можете разобраться в правильном исправлении. – ChrisF

ответ

0

Когда я запускаю программу DataGrid показывает правильное количество строк, но все ячейки пусты.

Затем вам нужно, чтобы убедиться, что класс ApplicationUserModel содержит общие свойства (а не поля) под названием «Id», «FirstName», «LastName», «E-mail» и «Имя пользователя» и что эти свойства actaully возвращает ожидаемые значения.

Каждое свойство должно по крайней мере, иметь открытый сеттер для вас, чтобы иметь возможность связываться с ними:

public class ApplicationUserModel 
{ 
    public string Id {get; set; } 
    public string FirstName {get; set; } 
    ... 
} 

Edit: Вы shold также удалить Foreground = «{х: Null}» из ваших DataGridTextColumns ,

Кстати, программный продукт ItemsSource будет «перезаписывать» тот, который вы связываете, в вашей разметке XAML.

+0

они установлены как этот открытый класс ApplicationUserModel { public string Id {get; задавать; } public string FirstName {get; задавать; } public string LastName {get; задавать; } public string GuestIdentification {get; задавать; } public string Email {get; задавать; } public string Имя пользователя {get; задавать; } public string Пароль {get; задавать; } } – rykereve

+0

Удалите Foreground = "{x: Null}" из ваших DataGridTextColumns. Я обновил свой ответ. Затем он должен работать, если свойства возвращают любые значения. – mm8

+0

спасибо, чувак, вы его исправили – rykereve

Смежные вопросы