我们刚刚将一个旧的Silverlight 4应用程序迁移到Silverlight 5,并注意到我们的一个Dataform存在问题。有问题的Dataform包含来自SL5工具包的NumericUpDown控件。我们注意到CommitEdit在以下情况下似乎不会触发(即返回false):
1) 打开包含DataForm 的弹出窗口
2) 通过单击向上或向下箭头更改NumericUpDown控件中的值。
3) 单击连接到Dataform的Save(保存)按钮。
连接到保存按钮的点击事件代码如下:
private void OKButton_Click(object sender, RoutedEventArgs e)
{
if (updateUserDataForm.ValidateItem())
updateUserDataForm.CommitEdit(true);
else
updateUserDataForm.CancelEdit();
}
XAML是:
<toolkit:DataField Label="Display Order" LabelStyle="{StaticResource LabelStyles}" HorizontalAlignment="Left">
<toolkit:NumericUpDown Minimum="1" Maximum="200" Value="{Binding DisplayOrder, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ValueChanged="NumericUpDown_ValueChanged"/>
</toolkit:DataField>
当您在单击"保存"按钮之前首次对表单焦点赋予另一个控件时,CommitEdit工作正常。当我们使用SL 4工具包中的DatForm和NumericUpDown控件时,我们从未有过这种行为。这是SL5工具包中引入的问题吗?
好吧,这似乎实际上是一个错误:
http://forums.silverlight.net/t/182569.aspx/1
我已经通过扩展NumericUpDown控件修复了它,如下所述:
http://silverlight.codeplex.com/workitem/4633
我确信这一定是SL5工具包特有的错误。