DataGrid -双向绑定需要Path或XPath
本文关键字:Path XPath -双 绑定 DataGrid | 更新日期: 2023-09-27 17:52:51
我想在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; }
}
在 address 和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和 number 字段,但当我试图设置Ulica的值(地址类中的字段)编译器给了我这个例外:
InvalidOperationException was unhandled
Two-way binding requires Path or XPath.
我怀疑 Adres
绑定属性是null所以当你试图编辑绑定Binding="{Binding Adres.Ulica}"
的列值时,它试图为地址设置值。但地址本身是无效的。因此,绑定在加载时静默失败。
你必须确保Adres
是初始化的所有绑定对象,这样你就可以编辑它的子属性Ulica
的值从dataGrid
在视图模型中,Telefony
和Adres
属性都声明为internal
。尝试将这些属性更改为public
。检查绑定源类型
你可以绑定到公共属性,子属性,以及索引
您还提到可以让Numer
工作,但在示例代码中,它似乎被声明为private
,这不是有效的绑定源。
问题是由于绑定成员名中的。(点)。请参考:c#/WPF中绑定到DataTable中包含句号的字段