0

我在 SL3 中有一个数据表单,它使用带有附加行为的 Prisms 命令来捕获事件。

(它非常紧跟这篇博文:http: //blogs.southworks.net/dschenkelman/2009/04/18/commands-with-attached-behavior-for-silverlight-3-dataform/#comment-607

基本上,一切都已连接并且工作正常,但是在视图模型中,我看不到如何访问事件的事件参数。

在 VM 的构造函数中,我定义了委托命令:

this.EditEnded = new DelegateCommand<object>(o => {
    //how can I tell if the button clicked was cancel or save?
}

但是我需要访问 DataFormItemEditEndedEventArgs 属性才能定义需要做什么?我想根据用户是否取消或提交来执行不同的操作。

4

2 回答 2

2

要取回参数,您可以像这样编辑您的 CommandBehaviorBase 派生类:

private void ItemEditEnded(object sender, DataFormItemEditEndedEventArgs e)
{
     this.CommandParameter = e.EditAction;
     ExecuteCommand();
}

这会将 EditAction(或您想要的任何其他内容)发送到 CommandDelegate。在这种情况下,您不会为参数添加附加属性。适当地编辑您附加的属性类(省略 CommandParameter)。我不喜欢这种方法(似乎有点不标准),我想知道其他人是否有其他建议。

我的意思是,你总是可以为不同类型的事件添加事件(一个用于提交等),这更纯粹一点,但这意味着很多额外的代码。在这种情况下你可以侥幸逃脱,但对于其他事件,这将变得不可能(通信鼠标坐标或一些荒谬的事情)。

关于 Prism 命令的视频。处理更多静态参数请参阅“命令参数”部分了解如何根据静态附加属性整理方法。

<Button Content="Save"
        HorizontalAlignment="Center"
        VerticalAlignment="Bottom"
        cal:Click.Command="{Binding GetCompanyData}"
        cal:Click.CommandParameter="SaveButton"
        />
于 2009-06-26T15:03:44.770 回答
0

也许您应该为单独的按钮和操作声明单独的命令(SaveCommand 和 CancelCommand)。

于 2009-06-27T16:25:09.990 回答