DataForms 似乎会在用户跳出某个字段时立即更新其 CurrentItem。即使 AutoCommit = false 也会发生这种情况。这种行为的副作用是,绑定到数据的其他控件会在用户编辑数据时更新,而不是在用户单击“确定”以接受 DataForm 更改时更新。有没有办法修改该行为以推迟将数据写入 CurrentItem 到用户接受更改时?
编辑:这是我正在使用的 DataForm 的大部分 Xaml:
xmlns:DataFormControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.DataForm.Toolkit"
<DataFormControls:DataForm x:Name="dataForm" AutoCommit="False" AutoEdit="False">
<DataFormControls:DataForm.EditTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<DataFormControls:DataField Label="Title">
<TextBox Text="{Binding Title, Mode=TwoWay}" Style="{StaticResource TextBoxStyle}"/>
</DataFormControls:DataField>
<DataFormControls:DataField Label="First Name">
<TextBox Text="{Binding FirstName, Mode=TwoWay}"/>
</DataFormControls:DataField>
<DataFormControls:DataField Label="Middle Name">
<TextBox Text="{Binding MiddleName, Mode=TwoWay}"/>
</DataFormControls:DataField>
<DataFormControls:DataField Label="Last Name">
<TextBox Text="{Binding LastName, Mode=TwoWay}"/>
</DataFormControls:DataField>
</StackPanel>
</DataTemplate>
</DataFormControls:DataForm.EditTemplate>
</DataFormControls:DataForm>
编辑 2:我用来避免这种行为的解决方法是复制要编辑的对象并将其设置为 DataForm.CurrentItem 属性,然后如果用户接受编辑,则将数据复制回原始对象. 我希望那里有更好的解决方案。