2013-10-08 4 views
0

меня Это clasesWPF Binding Ссылка фактический элемент DataGrid

public class Class1 
{ 
    public int Class1Id { get; set; } 
    public string Description { get; set; } 
} 

public partial class Class2 
{ 
    public Class2() 
    { 
     this.Class3 = new HashSet<Class3>(); 
    } 

    public int Id { get; set; } 
    public string Description { get; set; } 
    public Nullable<int> Class1Id { get; set; } 

    public virtual Class1 Class1{ get; set; } 
    public virtual ICollection<Class3> Class3 { get; set; } 

} 

public partial class Class3 
{ 
    public int Class3Id { get; set; } 
    public int OtherProp { get; set; } 
    public string Description { get; set; } 
} 

Тогда на ViewModel У меня есть коллекция observabel из class2

ObservableCollection<Class2> MyColl = new ObservableCollection<Class2>(); 

THis Наблюдаемые является переплетены к сетке, как это:

<DataGrid x:Name="DatGridPlanillas" ItemsSource="{Binding MyColl,Mode=TwoWay}" 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Class1 Description" Binding="{Binding /Class1.Description}"/> 
     <DataGridTextColumn Header="Class2 Id" Binding="{Binding Id ,Mode=TwoWay}"/> 
     <DataGridTextColumn Header="Class2 Descriprion" Binding="{Binding Description}"/> 
    </DataGrid.Columns> 
</DataGrid> 

Моя проблема - Class1.Description never Показать и на панели результатов на VS есть сообщение, которое показывает

System.Windows.Data Error: 40 : BindingExpression path error: 'Class1' property not found on 'current item of collection' ''Class2_D0FAA12D4E698EE37B64760A79763EA5E957BAC04F8E9FED7BDA4B99892A712D' (HashCode=61628235)'. BindingExpression:Path=/Class1.Description; DataItem='Class2_D0FAA12D4E698EE37B64760A79763EA5E957BAC04F8E9FED7BDA4B99892A712D' (HashCode=61628235); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String') 

Все остальные свойства отображаются так, как я ожидаю.

Что вызывает эта проблема?

+0

Что вы имеете в виду с фактическим товаром? В Class2 нет фактического элемента. Удалите '/' в 'Binding = {{Binding /Class1.Description}', и он должен показать описание. – LPL

+0

Tks за вашу помощь ничего не запустит эту другую ошибку ystem.Windows.Data Error: 40: BindingExpression path error: ' class1' свойство не найдено на 'объект' '' 'Class2_D0FAA12D4E698EE37B64760A79763EA5E957BAC04F8E9FED7BDA4B99892A712D (HashCode = 41412514)' BindingExpression:. Путь = Class1.Description; DataItem = 'Class2_D0FAA12D4E698EE37B64760A79763EA5E957BAC04F8E9FED7BDA4B99892A712D' (HashCode = 41412514); целевой элемент 'TextBlock' (Имя = ''); целевое свойство - «Текст» (тип «String») –

ответ

3

Я думаю, что у вас есть опечатка в вашей привязке.

Изменение привязки, к следующему:

<DataGridTextColumn Header="Class1 Description" Binding="{Binding Path=Class1.Description}"/> 

или

<DataGridTextColumn Header="Class1 Description" Binding="{Binding Class1.Description}"/> 

Это работает для меня, когда я попробовал ваш пример.

+0

Excelent как минимум два часа. Борьба с этим. –

+0

Я рад, что смог помочь :-) –