|
1
16
我最近也在考虑这个问题。我有个主意如果你用的话
Unity
在您的项目中作为“容器”或依赖项注入的任何内容。我想通常你会忽略
在我观看的一个示例视频中,Unity容器被创建为
我想您可以在测试中模拟调用Unity容器的结果。或者,也许您可以编写类似
好吧,这可能并不比仅仅使用
|
|
|
2
17
一些MVVM框架(例如 MVVM Light )利用 Mediator pattern . 因此,要打开一个新窗口(或创建任何视图),某些视图特定的代码将订阅来自中介的消息,而ViewModel将发送这些消息。 这样地: 亚述
在ViewModel
我更喜欢在singleton类中进行订阅,该类的“寿命”与应用程序的ui部分一样长。 总而言之:ViewModel传递类似“我需要创建一个视图”的消息,并且UI监听这些消息并对它们进行操作。 当然,没有“理想”的方法。 |
|
|
3
4
我有点晚了,但我发现现有的答案不够。我会解释原因。一般来说:
Benny Jobigan的Anwer:
这实际上不能解决任何问题。您正以一种紧密耦合的方式从ViewModel访问视图。唯一的区别是
如果您为视图使用接口,它会更干净:
现在,视图模型没有与视图紧密耦合。然而,我发现为每个视图创建接口是非常不切实际的。 电弧炉的功率:
这更好。似乎messenger或eventaggregator或其他pub/sub模式是MVVM中的通用解决方案:)缺点是很难调试或导航到
我的解决方案:您可以从MainWindowViewModel打开窗口,如下所示:
DialogService只接受Dialog的ViewModel,因此您的ViewModel完全独立于视图。在运行时,DialogService可以找到合适的视图(例如使用命名约定)并显示它,或者可以在单元测试中轻松模拟它。 在我的例子中,我使用这个接口:
其中dialogbutton指定dialogresult或icommand或两者。 |
|
|
4
2
看看我当前的MVVM解决方案,它可以在Silverlight中显示模式对话框。 它解决了您提到的大多数问题,但它完全是从平台特定的事物中抽象出来的,可以重用。另外,我没有使用代码隐藏,只使用实现ICommand的delegateCommands绑定。对话框基本上是一个视图-一个独立的控件,它有自己的ViewModel,从主屏幕的ViewModel显示,但通过DelagateCommand绑定从UI触发。 在此处查看完整的Silverlight 4解决方案 Modal dialogs with MVVM and Silverlight 4 |
|
|
5
1
我使用一个控制器来处理视图之间传递的所有信息。所有的视图模型都使用控制器中的方法来请求更多的信息,这些信息可以实现为对话框、其他视图等。 看起来像这样:
|
|
|
6
0
我的方法与Adrianm_S类似。但是,在我的例子中,控制器从不使用具体的视图类型。控制器与视图完全分离,方式与视图模型相同。 这是如何工作的,可以在 WPF Application Framework (WAF) . . 最好的问候, JBE |
|
|
A B · C#Excel自动调整列避免长文本时出错 11 月前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 11 月前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 11 月前 |
|
|
Duck0 · 这个对象在更高的帧率下会更快吗,因为它在Update()中? 11 月前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 11 月前 |