我正在编写一个连接到网络资源的应用程序。在MVVM中实现临时覆盖的最佳方法
当应用程序连接时,我想弹出一个覆盖图,其中包含通常的spinkin进度图形和取消按钮。我设计了一个ConnectProgressViewModel
和匹配ConnectProgressView
的覆盖。
我的问题是什么是最清洁的方式来显示/隐藏父视图模型的覆盖?
A)暴露从我父视图模型常数ConnectProgressViewModel
,并有ConnectProgressView
其知名度绑定到ConnectProgressViewModel.IsConnecting
财产。
B)暴露从父视图模型的通用Overlay
财产,它当用户想要连接设置为ConnectProgressViewModel
。父视图将ContentControl
绑定到此Overlay
属性,数据模板处理其余部分。
C)?
第一个似乎封装功能更多,与应用程序不必关心显示和隐藏覆盖,但暴露一个常数ConnectProgressViewModel
时感觉不对,只是偶尔显示。
第二种似乎更适合MVVM,ConnectProgressViewModel
仅在需要时才创建,但它将更多功能放在父级上,而且通用Overlay属性也有点奇怪。
干杯
编辑:
我要澄清,这个观点并不仅仅是显示忙碌状态。它允许取消/重试和选择不同的网络资源等。为了简洁起见,我省略了这些细节,这可能是人们专注于繁忙指标时的错误。
但是,如何显示/隐藏BusyIndicator? – GazTheDestroyer 2012-01-13 14:29:47
BusyIndicator在IsBusy为true时自动显示,当IsBusy为false时会自动显示。 – cadrell0 2012-01-13 14:30:58
是的,只是看了一下WPF Toolkit版本,谢谢。它似乎在所有的时间,并显示/隐藏自己像我的A)。 – GazTheDestroyer 2012-01-13 14:33:25