【问题标题】:Silverlight What's wrong with this Binding statement?Silverlight 这个 Binding 语句有什么问题?
【发布时间】:2011-06-02 02:23:49
【问题描述】:

我有一个员工集合,每个项目都有自己的 ProjectResource 项目集合。 我正在尝试对列进行数据绑定,但 ProjectResource 不会绑定。

<data:DataGrid x:Name="TestGrid">
            <data:DataGrid.Columns>
            <data:DataGridTextColumn Header="First Name" 
                Binding="{Binding Person.FirstName}" />
            <data:DataGridTextColumn Header="Last Name" 
                Binding="{Binding Person.LastName}" />
            <data:DataGridTextColumn Header="Week 1" 
                Binding="{Binding ProjectResource[0].PercentRequired}" />
            </data:DataGrid.Columns>
            <data:DataGridTextColumn Header="Week 2" 
                Binding="{Binding ProjectResource[1].PercentRequired}" />
            </data:DataGrid.Columns>            
  </data:DataGrid>

从上面你可以看到我们从 Employee.Person 中获取了 Name 详细信息,并且我们将子集合作为 Employee.ProjectResource。 这就是我所拥有的。从逻辑上讲,这很有意义(无论如何对我来说)它应该起作用,但事实并非如此。它显示名字和姓氏,但不显示项目资源数据。 也许这只是一个语法错误或一些简单的事情(我希望),但我们将不胜感激。

感谢阅读

【问题讨论】:

  • 绑定不正确时调试器应该输出消息。你的类和绑定是什么样的?
  • 项目资源绑定列中没有任何错误消息,只是没有数据。它们是从 RIA 服务中提取的独立实体。我尝试在所有 RIA 数据加载后分配项目源(所以我知道数据实际上在那里),但除了名称之外我什么也没有得到
  • ProjectResource 的类型是什么? ProjectResource 是在构造函数中初始化的吗?什么版本的 Silverlight?
  • 这是 Silverlight 3。我不确定您的意思,ProjectResource 是数据库中的一个表,它链接到员工表和项目表。每个员工都可以作为项目每周的项目资源分配,因此在上面的示例中,项目有 2 周,每个员工的 ProjectResource 表中有 2 个条目。所有这些表都存在于 EF 模型中,并通过 RIA 服务加载到应用程序中。然后将 datacontext.Employees 分配为数据网格的 itemsource。
  • Silverlight 只能查看 CLR 对象 - ProjectResource 的 CLR 类型是什么?它必须派生自 IList 才能使用属性路径索引。

标签: silverlight data-binding datagrid service ria


【解决方案1】:

我对此有一个解决方案,尽管它有点像 hack。

我在 silverlight 应用程序中创建了一个 newEmployee 和 Resource 类。我创建了一个 Collection 并将 Employee 实体项目添加到新集合中,并将这个新集合指定为网格的项目源。在对 xaml 进行一些轻微的语法修改后,它现在功能齐全,并且 2 路数据绑定到新集合。

我只需在启动 submitchanges 方法之前将任何更改导出回实体集合。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多