我想在DataGrid上显示我的对象数据库

public class Student
{
public string Imie { get; set; }
public string Nazwisko { get; set; }
string Numer { get; set; }

internal List<Telefon> Telefony { get; set; }
internal Adres Adres { get; set; }
}


在Adres和Telefon班上,我显然有一些额外的领域。

我的XAML:

<DataGrid Name="dataGrid" ItemsSource="{Binding Student}" AutoGenerateColumns="False" CellEditEnding="dataGrid_CellEditEnding" CurrentCellChanged="dataGrid_CurrentCellChanged" PreviewKeyDown="dataGrid_PreviewKeyDown">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Imie"        Binding="{Binding Imie}"/>
            <DataGridTextColumn Header="Nazwisko"    Binding="{Binding Nazwisko}"/>
            <DataGridTextColumn Header="Numer"       Binding="{Binding Numer}"/>
            <DataGridTextColumn Header="Ulica"       Binding="{Binding Adres.Ulica}"/>
            <DataGridTextColumn Header="KodPocztowy"       Binding="{Binding  Adres.KodPocztowy}"/>
            <DataGridTextColumn Header="Miasto"       Binding="{Binding Adres.Miasto}"/>
            <DataGridTextColumn Header="Tel. Numer"       Binding="{Binding Telefon.Numer}"/>
            <DataGridTextColumn Header="Tel. Operator"       Binding="{Binding Telefon.Operator}"/>
        </DataGrid.Columns>
    </DataGrid>


我可以轻松地获取和设置Imie,Nazwisko和Numer字段,但是当我尝试设置Ulica(Adres类中的字段)的值时,编译器给出了此异常:

InvalidOperationException was unhandled
Two-way binding requires Path or XPath.


感谢帮助。

最佳答案

我怀疑绑定属性为null,因此当您尝试编辑用于绑定Adres的列值时,它将尝试为Adres.Ulica设置值,但Adres本身为null。因此,绑定在加载时无提示地失败。

您必须确保为所有绑定的对象初始化Binding="{Binding Adres.Ulica}",以便可以从dataGrid编辑其子属性Adres的值。

关于c# - DataGrid-“双向绑定(bind)需要Path或XPath。”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22595101/

10-13 06:57