我已经在XAML设计器中使用ICollectionView
绑定了一个GridView
,但由于CollectionView
中的实体已转换为Object
类型且无法访问实体属性,因此属性未知。它可以运行,没有错误,但设计师显示为错误。如果我绑定到集合,我可以正常访问属性。
例如,实体是具有string Name
属性的Person
,我将它们放置在ObservableCollection<Person>
中并从中获取视图,然后将其绑定到GridView.ItemsSource
。现在,当我尝试设置列标题DataMemberBinding.FirstName
属性时,设计师将其显示为错误:
无法解析类型为对象的数据上下文中的“FirstName”属性
这是一个错误还是Resharper在跟我开玩笑?
示例代码:
public class Person
{
public string FirstName{
get { return _firstName; }
set { SetPropertyValue("FirstName", ref _firstName, value); }
}
}
public class DataService
{
public IDataSource DataContext { get; set; }
public ICollectionView PersonCollection{ get; set; }
public DataService()
{
DataContext = new DataSource();
//QueryableCollectionView is from Telerik
//but if i use any other CollectionView same thing
//DataContext Persons is an ObservableCollection<Person> Persons
PersonCollection = new QueryableCollectionView(DataContext.Persons);
}
}
<telerik:RadGridView x:Name="ParentGrid"
ItemsSource="{Binding DataService.PersonCollection}"
AutoGenerateColumns="False">
<telerik:RadGridView.Columns >
<telerik:GridViewDataColumn Header="{lex:Loc Key=FirstName}"
DataMemberBinding="{Binding FirstName}"/>
</telerik:RadGridView.Columns>
</telerik:RadGridView>