Привязка данных к результату запроса LINQ в Silverlight - PullRequest
1 голос
/ 13 марта 2011

Я получаю простой запрос LINQ, но я соединяюсь с двумя таблицами и связываю данные с ListBox. Я не могу правильно показать элемент в ListBox.

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

var newPeople = (from p in clsGeneral.db.Table<SmartFXAttribes>()
                 join q in clsGeneral.db.Table<CategoryAttribes>() on p.catId equals q.ID
                 where p.catId == ((SmartFX.CategoryAttribes)((ComboBox)cmbPrintSize).SelectedValue).ID
                 select new 
                 {
                     p.ID,
                     p.ImageHeight,
                     p.Imageoutline,
                     p.ImageUnit,
                     p.ImageWidth,
                     p.NoofPic,
                     p.TextboxCaption,
                     p.CanvasPixelHeight,
                     p.CanvasPixelWidth,
                     p.CanvasUnit,
                     p.catId,
                     q.FileName
                 }).ToList();
lstThumbnail.ItemsSource = newPeople;

Этот код будет работать нормально.

var newPeople =
    (from p in clsGeneral.db.Table<SmartFXAttribes>()
     join q in clsGeneral.db.Table<CategoryAttribes>() on p.catId equals q.ID
     where p.catId == ((SmartFX.CategoryAttribes)((ComboBox)cmbPrintSize).SelectedValue).ID
     select p).ToList();

lstThumbnail.ItemsSource = newPeople;

Спасибо!

1 Ответ

1 голос
/ 13 марта 2011

Проблема заключается в том, что первый запрос создает объект анонимного типа, но Silverlight не может выполнить привязку данных к объекту анонимного типа (анонимные типы являются внутренними, а возможности отражения Silverlight не позволяют получать доступ к внутренним типам из других сборок). Ваш второй запрос возвращает объекты именованного типа, поэтому он работает просто отлично.

Лучшее решение для этого - объявить открытый тип, содержащий общедоступные свойства для всего, что вы хотите вернуть из первого запроса, и вместо этого вернуть его экземпляр.

Вы можете обойти это с этим хаком , хотя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...