Многократное Приведение из DataGrid - PullRequest
0 голосов
/ 08 марта 2011

У меня есть небольшая проблема с кастингом и сетями данных.У меня есть запрос LINQ to SQL:

var contents = from content in context.Contents
               join contenttype in context.ContentTypes on content.ContentTypeID equals contenttype.ContentTypeID
               select new { content, contenttype };

, и затем он помещается в сетку данных (не все данные, только выбранные столбцы, такие как content.ContentID и т. Д.).

проблема в том, что когда я пытаюсь получить выбранную строку, я не могу.У меня есть следующий код:

Console.WriteLine((Content)dataGrid1.SelectedItem);

, который завершается неудачей из-за того, что тип является и Content, и ContentType - есть ли способ обойти это?Я получаю ошибку:

Unable to cast object of type '<>f__AnonymousType0`2[iAdvert_Desktop.Content,iAdvert_Desktop.ContentType]' to type 'iAdvert_Desktop.Content'.

Если я просто напишу SelectedItem, я получу: { content = iAdvert_Desktop.Content, contenttype = iAdvert_Desktop.ContentType } - есть ли способ сделать что-то вроде: (Content)dataGrid1.SelectedItem['Content'];?

Ответы [ 3 ]

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

Я думаю, что этот пост может ответить на ваш вопрос: Как получить значения из SelectedItem в ComboBox с Linq и C # 3.5

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

SelectedItem - это не «и Content, и ContentType», это анонимный тип, свойства которого называются Content и ContentType.

Почему бы не сполить небольшой класс poco с двумя свойствами, которые вам нужны, и вместо этого вернуть одно из них?

public class YourPocoClass
{
   public whateverContentIs Content { get; set; }
   public whateverContentTypeIs ContentType { get; set; }
}

var contents = from content in context.Contents
               join contenttype in context.ContentTypes on content.ContentTypeID equals contenttype.ContentTypeID
               select new YourPocoClass() {Content = content, ContentType = contenttype };


Console.WriteLine(((YourPocoClass)dataGrid1.SelectedItem).Content);
1 голос
/ 08 марта 2011

В WPF вам никогда не нужно использовать SelectedItem. Вам лучше изменить дизайн, чтобы вместо этого использовать представление коллекции.

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