0

我正在重写我们的一个大型 Silverlight 应用程序以使用 PRISM 和 MVVM 设计模式。

一个非常常见的场景是视图中的 DataGrid。双击一行允许用户使用 ChildWindow 编辑由该行表示的实体。

我很想在后面的代码中捕获 DoubleClick 事件,创建一个适当类型的新 ChildWindow,并将 DataContext 设置为 DataGrid.SelectedItem。

但是,我知道这不是使用 PRISM 和 MVVM 处理这种情况的正确方法。

我很想知道什么是建议!(回复:我的标题......看起来 InteractionRequest 可能是最好的方法?)

谢谢...

编辑:我们最终决定使用 InteractionRequest 作为我们的解决方案。我们几乎总是使用“通知”作为类型,并传递一个新的 ViewModel(每个 ChildWindow 都有自己的)作为内容。

4

1 回答 1

1

在我们的例子中,ChildWindow 视图足够复杂,足以保证它自己的视图模型。此视图与数据网格视图的耦合不太紧密。

因此,我们在 XAML 中将 EventTrigger 附加到数据网格(我们实际上使用 Telerik 的数据网格)。事件触发器使用 InvokeCommandAction 在视图模型中执行命令。

该命令发布一个聚合事件,该事件将所选项目作为有效负载。该事件由负责创建 ChildWindow 视图和相应视图模型的中央应用程序控制器获取(使用事件有效负载作为上下文)。

我认为在您的情况下可能会使用交互请求,但根据我的理解,交互请求背后的想法是非常简单的 Ok 或 Yes/No 交互。您可能会使用一堆文本框、验证等来突破界限。

于 2012-08-31T18:33:37.030 回答