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>

 

 

posted @ 2012-12-17 12:02  Ken-Cai  阅读(341)  评论(0编辑  收藏  举报