我有一个匿名的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
};
如果这是一个非常简单的问题,我会非常抱歉。
谢谢!
答案 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}"/>