Reputation: 5534
I have This clases
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; }
}
Then on a viewmodel I have an observabel collection of class2
ObservableCollection<Class2> MyColl = new ObservableCollection<Class2>();
THis Observable is Binded to a grid as 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>
My problem is Class1.Description never Show and at results panel on VS there is a message that show
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')
All other properties are rendered as I expect.
Whats causing this problem?
Upvotes: 0
Views: 681
Reputation: 1340
I think you have a typo in your binding.
Change your Binding to the following:
<DataGridTextColumn Header="Class1 Description" Binding="{Binding Path=Class1.Description}"/>
or
<DataGridTextColumn Header="Class1 Description" Binding="{Binding Class1.Description}"/>
This worked for me when I tried your example.
Upvotes: 3