2016-04-26 32 views
0

具体来说,在这种情况下,应用程序本身就是收件人。我的思考过程是,在处理创建新视图的场景时,这将允许视图和视图模型之间的最小可能联系:它们将严格处理消息,并且WPF应用程序的应用程序级别将处理这些消息,根据需要创建新的视图(并通过这些视图的DataContext隐式地查看模型)。从XAML注册MVVM Light中应用程序级别的消息收件人?

据我所知,这足够简单,如果我进入代码隐藏(app.xaml.cs)。不过,我最好喜欢在xaml中处理这个消息接收者注册,如果可能的话,因为行为相当直接,所有它真正要做的就是调用ShowDialog来获得适当的View(我认为没有进一步的处理是需要,但我可能会忘记一些东西)。 (我知道MVVM并不真的禁止使用代码隐藏,而且我用这个让自己变得更难,但是我认为如果不违反其他MVVM原则,它可能会改善代码组织)。当我考虑使用System.Windows.Interactivity并将EventTrigger绑定到Application类的Startup事件时,我想我已经拥有它了,但是当我发现它需要扩展DependencyObject以使其工作时被挫败。

总之,我的问题是双重的: 答:是否有可能在涉及创建视图的消息子集的app.xaml中处理消息接收者注册。 B.这是一个适当的结构来尝试和应用,或者我的想法是关于如何组织处理与其他视图相关的消息的责任。如果这不是一个合适的方法,有没有更简单的方法或更好的方法?

回答

0

View应该包含所有与视图相关的代码并且没有程序逻辑 - 这是MVVM分离。如果您的视图需要显示消息框,则必须通过View中的代码进行处理。这与动画必须在View中定义相同,但在后面的代码中可以更容易。

MVVMLight消息允许ViewModel说一个简单的方法来说“我想展示这个”和View来决定如何展示它。 View注册以接收所需的消息类型并处理显示它的UI部分 - 不管是MessageBox还是其他。

纯粹的XAML,也许更漂亮的方法是建立一个自定义消息框。

至于B部分:我会收到我想要处理它们的消息。

相关问题