Mvvm 如何在Windows Phone 7上实现基本视图功能?

Mvvm 如何在Windows Phone 7上实现基本视图功能?,mvvm,windows-phone-7,silverlight-3.0,Mvvm,Windows Phone 7,Silverlight 3.0,假设在我的所有视图上,或者在我的应用程序中的任何时候,我都希望能够显示一个错误消息弹出窗口,并且它看起来总是一样的。我该怎么做 第一个想法是让我所有的视图模型都扩展一个基本视图模型,这有助于实现这些功能,但是在那之后,我是否让这个基本视图模型实际创建UI小部件并显示它们 谢谢, 标记您可能可以在基本视图模型上定义一个事件,每当发生错误时,该事件将在视图模型内触发,然后在视图中,您可以订阅此事件并显示弹出窗口。您可以在激发事件的EventArgs中携带错误上下文 此外,您可以统一显示弹出窗口的逻辑

假设在我的所有视图上,或者在我的应用程序中的任何时候,我都希望能够显示一个错误消息弹出窗口,并且它看起来总是一样的。我该怎么做

第一个想法是让我所有的视图模型都扩展一个基本视图模型,这有助于实现这些功能,但是在那之后,我是否让这个基本视图模型实际创建UI小部件并显示它们

谢谢,
标记

您可能可以在基本视图模型上定义一个事件,每当发生错误时,该事件将在视图模型内触发,然后在视图中,您可以订阅此事件并显示弹出窗口。您可以在激发事件的EventArgs中携带错误上下文

此外,您可以统一显示弹出窗口的逻辑,但这可能是另一种情况:)

这是可测试的,并且与视图很好地解耦

希望这有帮助,
Robert

如果您想在一系列视图中提供一些通用功能,那么您可以实现一个基类,该基类继承自
PhoneApplicationPage
,然后从该类派生所有类。然后,页面的XAML如下所示:

<local:BasePage xmlns ...
                xmlns:local="clr-namespace:MyNamespace"
                x:Class="MyNamespace.MyPage">
但是,您将无法在XAML中为基本页定义通用UI组件。如果您想拥有通用UI组件,您应该在基本页面的代码隐藏中手动创建它们,可能是在加载的事件的处理程序中,但我认为更好的解决方案是在
UserControl
中提供您的通用UI,然后将其添加到每个页面中

如果您想显示Toast或Message Box,那么我建议按照中的说明从中选择
ToastRequestTrigger
MessageBoxRequestTrigger