Wpf ICollectionView绑定项无法解析对象类型的属性

ram*_*n22 12 c# wpf xaml icollectionview

我已经绑定了GridView一个ICollectionView在XAML设计器中的属性未知,因为CollectionView已经转换为类型Object的实体并且无法访问实体属性,它运行良好没有错误但设计者将其显示为错误,如果我绑定到我可以访问属性的集合

示例实体是一个Person具有string Name属性的我将它们放在一个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>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

rob*_*hoo 7

Resharper在XAML视图中提供的警告是因为控件的设计时视图不知道它的数据上下文是什么类型.您可以使用ad:DesignInstance来帮助您进行绑定.

添加以下内容(适当替换Assembly/Namespace/Binding Target名称)

<UserControl x:Class="MyNamespace.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup?compatibility/2006"
mc:Ignorable="d"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:lcl="clr?namespace:MyAssembly"
d:DataContext="{d:DesignInstance Type=lcl:ViewModel}">
Run Code Online (Sandbox Code Playgroud)