【问题标题】:DataGrid - "Two-way binding requires Path or XPath."DataGrid - “双向绑定需要 Path 或 XPath。”
【发布时间】:2014-04-30 23:10:23
【问题描述】:

我想在 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.

感谢您的帮助。

【问题讨论】:

    标签: c# wpf xpath datagrid


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      在您的视图模型中,TelefonyAdres 属性都声明为 internal。尝试将这些属性更改为public。检查Binding Source Types

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

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

      【讨论】:

        【解决方案3】:

        问题在于绑定成员名称中的 .(dot)。 请参阅: Binding to fields containing a period in DataTable in C#/WPF

        【讨论】:

          猜你喜欢
          • 2011-11-29
          • 1970-01-01
          • 2015-10-30
          • 1970-01-01
          • 2014-11-29
          • 1970-01-01
          • 2014-11-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多