DataForm 如何将点击保存按钮与MVVM的VM Command 绑定问题
网上大多的例子是通过绑定到EditEnded事件,如下所示
<toolkit:DataForm Name="dataForm员工" CurrentItem="{Binding 员工Obj}" CommandButtonsVisibility="Commit"
AutoCommit="False" KeyDown="dataForm员工_KeyDown"
CommitButtonContent="保存" CancelButtonContent="取消">
<toolkit:DataForm.EditTemplate>
<DataTemplate>
<StackPanel>
<toolkit:DataField>
<TextBox Text="{Binding 姓名, Mode=TwoWay}" />
</toolkit:DataField>
<toolkit:DataField>
<TextBox Text="{Binding 身份证, Mode=TwoWay}" />
</toolkit:DataField>
</StackPanel>
</DataTemplate>
</toolkit:DataForm.EditTemplate>
<i:Interaction.Triggers>
<i:EventTrigger EventName="EditEnded">
<cmdextras:EventToCommand Command="{Binding SaveCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</toolkit:DataForm>
但这样做有个缺点,程序的操作顺序是,先提交到WCF,在进行Dataform的验证。而且这种在VM中捕获不到异常。
所以建议不要用这种方法。而是通过后台代码去处理。
<toolkit:DataForm Name="dataForm员工" CurrentItem="{Binding 员工Obj}" CommandButtonsVisibility="Commit"
AutoCommit="False" KeyDown="dataForm员工_KeyDown" EditEnded="dataForm员工_EditEnded"
CommitButtonContent="保存" CancelButtonContent="取消">
<toolkit:DataForm.EditTemplate>
<DataTemplate>
<StackPanel>
<toolkit:DataField>
<TextBox Text="{Binding 姓名, Mode=TwoWay}" />
</toolkit:DataField>
<toolkit:DataField>
<TextBox Text="{Binding 身份证, Mode=TwoWay}" />
</toolkit:DataField>
</StackPanel>
</DataTemplate>
</toolkit:DataForm.EditTemplate>
</toolkit:DataForm>