【问题标题】:How do I bind child entity detail fields to text boxes?如何将子实体详细信息字段绑定到文本框?
【发布时间】:2013-02-01 04:59:11
【问题描述】:

我的 RadGridView 通过父实体的导航属性绑定到子记录。用户可以在网格中编辑记录。现在我还想允许在网格之外编辑子记录。在网格中选择记录后,您可以使用文本框对其进行编辑。我似乎无法为每个文本框找到正确的绑定语句。我的工作子网格 XAML 看起来像这样:

<telerik:RadGridView Name="childGrid" ItemsSource="{Binding ChildEntitiesNav, Mode=TwoWay}" IsSynchronizedWithCurrentItem="True" AutoGenerateColumns="False">
     <telerik:RadGridView.Columns>
          <telerik:GridViewDataColumn DataMemberBinding="{Binding ChildFieldOne}" Header="Child Field One"/>
          <telerik:GridViewDataColumn DataMemberBinding="{Binding ChildFieldTwo}" Header="Child Field Two" />

我已经添加了与每个网格列对应的文本框,但我无法显示任何数据。我试过这些文本框绑定语句:

Text="{Binding Path=ChildEntitiesNav.ChildFieldOne}

Text="{Binding Path=ChildFieldOne}

我首先使用 WPF 和实体框架数据库。 通过父导航属性编辑子详细信息实体的正确绑定语句是什么?

提前致谢。

回答: Andrey 的回答让我找到了解决方案。我只需要将我的文本框绑定到网格的 SelectedItem(而不是绑定到子实体)。我将网格名称作为 DataContext 添加到我的文本框中:

<TextBox Name="ChildFieldTextBox" Text="{Binding Path=ChildFieldName, Mode=TwoWay, ValidatesOnExceptions=true, NotifyOnValidationError=true}" DataContext="{Binding ElementName=childGrid, Path=SelectedItem, Mode=TwoWay}"  />

这些链接有帮助:

Herehere.

【问题讨论】:

    标签: wpf entity-framework data-binding telerik


    【解决方案1】:

    Here 是一篇可能对您有所帮助的文章。它描述了如何将控件绑定到 DataGrid 的选定项的属性。

    或者您可以将SelectedChildEntityNav 属性添加到您的ViewModel。 RadGridView 声明将如下所示:

    <telerik:RadGridView Name="childGrid" IsSynchronizedWithCurrentItem="True" AutoGenerateColumns="False"
    ItemsSource="{Binding ChildEntitiesNav, Mode=TwoWay}"
    SelectedItem="{Binding SelectedChildEntityNav, Mode=TwoWay}">
    

    之后,您可以将文本框绑定到SelectedChildEntityNav 的属性。

    【讨论】:

    • 根据您的回答,我找到了解决方案。答案的灵感来自您使用网格的 SelectedItem。我的修复涉及绑定到网格而不是子实体。我没有使用 MVVM - 只是直接绑定到 EF 实体。我为我的问题添加了完整的答案,但你得到了信任。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 2019-01-02
    相关资源
    最近更新 更多