简体   繁体   English

WPF绑定参考datagrid的实际项目

[英]WPF Binding Reference actual item of datagrid

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 然后在一个视图模型上,我有一个class2的observabel集合

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 我的问题是Class1.Description从不显示,并且在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')

All other properties are rendered as I expect. 所有其他属性均按我的期望进行渲染。

Whats causing this problem? 是什么导致此问题?

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. 当我尝试您的示例时,这对我有用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM