当Silverlight数据表的属性autogeneratedfields设置为true时,一切正常(按钮行为正确,这意味着一旦我开始键入它就会启用。所以,现在我有一个场景,我必须自定义外观dataform并将autogeneratefields设置为false(我手动使用xaml中的数据字段),当我在文本框中键入内容时,提示按钮未启用,只有当我将鼠标放在下一个文本框中时才会启用它。任何帮助表示赞赏。感谢。
答案 0 :(得分:1)
尝试将对象设为IEditableObject
(System.ComponentModel)。
DataForm
的一个很酷的地方在于它尝试与当前正在发生的状态进行通信。如果正在使用AutoGenerateFields
,那么数据形式的模板引擎和它尝试使用的对象之间会有一些东西,从而为您完成循环。
如果没有接口(因为您自己提供了模板)到IEditableObject
可用,DataForm
在更新Binding之前不知道它实际上正在编辑对象。在Silverlight中,仅在TextBox
失去焦点后才更新绑定。
IEditableObject的意思是告诉对象这个人知道如何取消和保存。当MSDN documentation告诉我们需要能够将对象回滚到其原始状态时,这一点尤其重要。因此,当您开始编辑时,您可以保留其副本。然后,单击取消时,您可以通过复制数据来回滚更改。我查看了MSDN文章,他们做了很好的解释。
如果您将对象设为IEditableObject
,则此行为可能会返回到您想要的方式。如果没有,那么我不能正确理解这个问题,并希望看到一个小样本的代码。
另外,请随时查看CodePlex上DataForm
的源代码:http://silverlight.codeplex.com/SourceControl/changeset/view/71382
我不得不多次浏览代码来解决问题。
祝你好运!