提交按钮中的silverlight数据在输入框中键入时不会首次启用

时间:2012-01-06 18:53:28

标签: silverlight

当Silverlight数据表的属性autogeneratedfields设置为true时,一切正常(按钮行为正确,这意味着一旦我开始键入它就会启用。所以,现在我有一个场景,我必须自定义外观dataform并将autogeneratefields设置为false(我手动使用xaml中的数据字段),当我在文本框中键入内容时,提示按钮未启用,只有当我将鼠标放在下一个文本框中时才会启用它。任何帮助表示赞赏。感谢。

1 个答案:

答案 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

我不得不多次浏览代码来解决问题。

祝你好运!