我有一个 Silverlight 项目(在 VB 中),它使用(WCF RIA)域服务,该服务使用 POCO 实体。我正在使用 DataForm 显示数据。我的域服务已指定(正确)InsertUser、UpdateUser、DeleteUser 方法。CommandButtonsVisibility 未设置(所以我猜它有默认值)。

但是,提交按钮不可见(它不仅被禁用,甚至不存在)。当我设置 CommandButtonsVisibility=All 我可以使用编辑按钮并且它正在工作(更改保存在数据库中)。但我想使用默认行为。

我认识到如果在域服务中写入或未写入 CRUD 方法,DataForm 会自动显示或隐藏按钮(我用删除方法对其进行了测试)。

我做错了什么,我的更新方法定义不正确吗?它们是这样的:

Public Sub UpdateUser(ByVal user As User)
     '... update the user
End Sub

对于 C# 用户:

public void UpdateUser(User user)
     //... update the user
End Sub
有帮助吗?

解决方案

第一件事就是第一件事。DataForm 是我一生中遇到过的最有问题的代码。它主要设计为用作 DataGrid 的子视图,在视图的主/子类型中。我猜他们只是用生成的不可维护的拖放代码对其进行了测试,您在介绍视频中经常看到这种代码。

现在让我们解决您的问题:最常见的原因是您没有将 DataForm 绑定到正确的支持数据存储。如果您绑定到单个项目,那么您就很不走运了。只需实现您自己的“确定”和“取消”按钮即可。但如果您正在处理集合,请确保它实现 ICollectionView。(您也可能会幸运地使用 ObservableCollection。)

如果您需要更具体的帮助,请发布 XAML 的相关部分和后面的代码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top