繁体   English   中英

DataGrid - “双向绑定需要Path或XPath”。

[英]DataGrid - “Two-way binding requires Path or XPath.”

我想在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; }
}

AdresTelefon课程中,我显然有一些额外的领域。

我的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>

我可以轻松地设置和设置ImieNazwiskoNumer字段,但是当我试图设置Ulica的值( Adres类中的字段)时,编译器给了我这个例外:

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

感谢帮助。

我怀疑Adres绑定属性为null所以当您尝试编辑绑定Binding="{Binding Adres.Ulica}"的列值时,它会尝试为Adres.Ulica设置值,但Adres本身为null。 因此绑定在加载时无声地失败。

你必须确保Adres被初始化为所有绑定的对象 ,以便为它的子属性,您可以编辑该值Ulica从数据网格。

在您的视图模型都TelefonyAdres属性被声明为internal 尝试将这些属性更改为public 检查绑定源类型

您可以绑定到公共属性 ,子属性以及索引器

你还提到过你可以让Numer工作但是在示例代码中,它似乎被声明为private ,它不是有效的绑定源。

问题是由于绑定成员名称中的。(点)。 请参阅: 在C#/ WPF中绑定到包含DataTable中句点的字段

暂无
暂无

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

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