Сетка данных Silverlight не показывает никаких данных с анонимными запросами RIA-сервисов. - PullRequest
0 голосов
/ 10 марта 2010

У меня есть анонимный запрос linq, который я связываю с сеткой данных. Когда я отлаживаю, данные в порядке, но не отображаются в сетке данных, я подозреваю, что запрос к службам RIA не завершен, пока я не связал к сетке данных. Я мог бы использовать событие LoadOperation <> () Completed. Но это работает только с определенными объектами, так как я могу это сделать? Для справки вот последний пост: Исключение для пустой ссылки LINQ Вот запрос:

var bPermisos = from b in ruc.Permisos
                                 where b.IdUsuario == SelCu.Id
                                 select new {
                                     Id=b.Id,
                                     IdUsuario=b.IdUsuario,
                                     IdPerfil=b.IdPerfil,
                                     Estatus=b.Estatus,
                                     Perfil=b.Cat_Perfil.Nombre,
                                     Sis=b.Cat_Perfil.Cat_Sistema.Nombre

                                 };

Я совершенно новичок, извините, если это очень простой вопрос.

Спасибо !!

1 Ответ

0 голосов
/ 10 марта 2010

Silverlight 3 не поддерживает привязку данных к анонимным типам.

Вам нужно создать простой класс, в который будут помещены ваши свойства.

Вот метод ValueConverter:

namespace SilverlightApplication55
{
    using System;
    using System.Windows;
    using System.Windows.Data;

    public class NamedPropertyConverter : IValueConverter
    {
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value == null || parameter == null)
        {
            return null;
        }

        var propertyName = parameter.ToString();

        var property = value.GetType().GetProperty(propertyName);

        if (property == null)
        {
            return null;
        }

        return property.GetValue(value, null);
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return DependencyProperty.UnsetValue;        
    }
}
}

Затем вы помещаете это в свой UserControl. Ресурсы:

<local:NamedPropertyConverter x:Key="NamedPropertyConverter"/>

И здесь вы хотите использовать именованный параметр - передайте его с помощью ConverterParameter:

<TextBlock Text="{Binding Converter={StaticResource NamedPropertyConverter}, ConverterParameter=Estatus}"/>
...