2012-03-16 3 views
0

XAML сторона:HelloWorld стиль DataGrid были пустые строки в результате

<DataGrid Name="MyGrid" ItemsSource="{Binding}" /> 

Я попытался также с:

<DataGrid Name="MyGrid" ItemsSource="{Binding MyObj}" /> 

Кодекса за:

MyGrid.ItemsSource = new[] { 
    new MyObj{A = "aaa", B = "sss"}, 
    new CompteurDate{A = "bbb", B = "eee"} 
}; 

Результат показывает правильный номер элементов в сетке, но строки пустые. Я уверен, что это смертельно легко, но я застрял: -/ Любая идея?

Спасибо заранее, Эрик

ответ

0

Извините Рэйчел, я не отправлял должным образом:

MyGrid.ItemsSource = new[] { 
    new MyObj{A = "aaa", B = "sss"}, 
    new CompteurDate{A = "bbb", B = "eee"} 
}; 

Должно быть:

MyGrid.ItemsSource = new[] { 
    new MyObj{A = "aaa", B = "sss"}, 
    new MyObj{A = "bbb", B = "eee"} 
}; 

К сожалению об этом .. (я

Во всяком случае, я нашел свой путь Тип объекта, который я использовал, был причиной. У этого не получилось:

public class MyObject 
{ 
    public string A; 
    public string B; 
} 

И нравится, что он сделал:

public class MyObject 
{ 
    public string A { get; set; } 
    public string B { get; set; } 
} 

Так я выйти из моего кода привет мир, вернуться к моей реальной жизни implemantation, и .... это не сработало, блин. У меня был IEnumerable вместо массива. Короче говоря, добавление «ToArray()» в конце делало это, но я не понимаю, почему. Хорошо, мой перечислимый был подвержен позднему исполнению, но datagrid, читающий его ItemsSource shoud, запустил это выполнение, не так ли?

Итак, проблема решена, но если кто-то есть какой-то рациональный свет поставить на этой магии ...

Спасибо!

0

Я не 100% уверен, что вы пытаетесь сделать здесь, но есть несколько вещей, которые я вижу, которые могут быть причиной проблемы

По умолчанию , DataGrids автоматически генерирует свои столбцы на основе свойств объектов, находящихся в ItemsSource. Проблема в том, что у вас есть два разных объекта в вашем ItemsSource, поэтому он не знает, с какого объекта использовать свойства. Я даже не могу воспроизвести вашу ошибку, используя предоставленный вами код, потому что он говорит мне «Нет лучшего типа для неявно типизированного массива», хотя если я укажу ItemsSource, это массив object, то я получаю результаты, которые вы описания.

Вторая часть меня путает, вы устанавливаете ItemsSource как в XAML, так и в коде. Вам нужно только установить его один раз.

Теперь вы можете установить DataGrid.DataContext в код для объекта, а затем привязать ItemsSource в XAML к свойству на том, что существует на этом объекте, так что, возможно, это то, что вы пытаетесь сделать.

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