从后台类调用UI例程是可以接受的

时间:2012-01-18 00:15:51

标签: .net silverlight architecture user-interface design-patterns

这是关于.net应用程序中UI交互式执行控制流程的问题。

我有一个Windows Phone(Silverlight)应用程序。

UI屏幕向用户显示一些控件。用户单击“上传音频”按钮,这会触发CloudUploadProvider初始化上传。在这种情况下,CloudUploadProvider由视图模型调用(或者我甚至可以通过第三方类实例路由执行请求以获得正确性,无所谓)。

CloudUploadProvider确定,如果它是第一次运行,如果它找不到云帐户访问凭据,它应该要求用户提供一些。

我是否可以从Navigate类调用CloudUploadProvider到云帐户登录页面,或者将UI导航请求路由到其他类或者更好(建筑最佳实践)甚至是启动上传请求的视图模型。

我试图坚持使用MVVM模式,但我偶然发现的问题是是否应该允许“后台”BL类直接访问UI?

1 个答案:

答案 0 :(得分:1)

对您的应用程序CloudUploadProvider调用Navigate将仅仅是启动上传的隐藏后果!我建议让CloudUploadProvider抛出ArgumentException或引发Event或直接返回一些错误代码或消息,其中说明“丢失云凭据”。这样,UI可以侦听此消息,并控制缺少凭据时发生的情况。

缺少凭据时发生的情况似乎不是CloudUploadProvider的业务范围。相反,它应该是您的应用程序使用CloudUploadProvider

的任何部分的业务领域

虽然只是我的两分钱 - 希望这有帮助!