Silverlight数据网格不显示具有匿名查询RIA服务的任何数据

时间:2010-03-10 15:01:14

标签: silverlight service ria anonymous

我有一个匿名的linq查询,我绑定到一个数据网格,当我调试它带来好的数据,但它没有在数据网格中显示,我怀疑RIA服务的请求在我绑定它之前没有完成到datagrid。我可以使用LoadOperation<>()Completed事件。但它只适用于Defined Entities,那么我该怎么做呢? 这里是参考的最后一篇文章: LINQ query null reference exception 这是查询:

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 :(得分:0)

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.Resources:

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

这就是你想要使用命名参数的地方 - 用ConverterParameter传递它:

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