2013-11-27 329 views
9

我在XAML設計器中將GridViewICollectionView綁定在一起,因爲CollectionView中的實體已轉換爲類型Object且實體屬性不能爲訪問時,它運行良好沒有錯誤,但設計者表示它是錯的,如果我綁定到集合我可以訪問罰款屬性Wpf ICollectionView綁定項無法解析對象類型的屬性

實例的實體是Personstring Name財產我將它們放置在一個ObservableCollection<Person>並獲得從它的視圖,並將其綁定到GridView.ItemsSource現在當我嘗試設置列標題DataMemberBinding.FirstName屬性設計器顯示它作爲錯誤

不能解析的對象類型的數據上下文屬性「姓」

是一個bug或者是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> 

enter image description here

回答

5

The warnin gs Resharper在XAML視圖中給你的是因爲控件的設計時視圖不知道它的數據上下文是什麼類型。你可以使用d:DesignInstance來幫助你的綁定。

添加以下(替換裝配/命名空間/綁定適當目標名稱)

<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}"> 
相關問題