我们刚刚将旧的 Silverlight 4 应用程序迁移到 Silverlight 5 并注意到我们的一个 Dataforms 存在问题。有问题的 Dataform 包含来自 SL5 工具包的 NumericUpDown 控件。我们注意到 CommitEdit 在以下情况下似乎没有触发(即它返回 false):
1) 打开包含 DataForm 的弹出窗口
2) 通过单击向上或向下箭头更改 NumericUpDown 控件中的值。
3) 单击连接到 Dataform 的 Save 按钮。
连接保存按钮的Click事件代码如下:
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 工具包引入的问题吗?