注意:请原谅我的英语。这不是我的母语 - 我有时拼写错误或使用错误的时间
情况描述
首先,我将描述情况。
我正在开发一个 Windows Phone 8 应用程序(WP8.0 w/ .NET 4.5 in C#/XAML)。这是我的第一个 WP8 应用程序,我周围没有多少人可以帮助我,所以我是从网上的教程和几本书中自己学习的(换句话说,我是菜鸟,没有那么多经验)。
我从Web服务(我将在后面描述)收集的数据量“不是那么大” ,我决定使用Model-View-ViewModel (MVVM) 来存储它提供的数据。
MVVM 结构:
这只是我的 MVVM 结构的伪图,描述在它下面
MainViewModel
--------------
|
+ several properties (Username, Password, etc...)
|
+ Commands (loadData1, loadData2, flush, ... - implementations of ICommand)
|
+ ------ PersonalInfoModel
| -----------------
| + several properties (name, surname, phonenumber, etc...)
|
|
+ ------ DataGroup1Model
| ---------------
| +several properties
| +ObservableCollection<Item1> (roughly 0 - 50 items)
| +ObservableCollection<Item2> (roughly 0 - 5 items)
| +ObservableCollection<string> (roughly 0 - 5 items)
|
| Item1 Item2
| ----- -----
| +several properties +several other properties
|
|
+ ------ DataGroup2Model (similar to previous)
...et cetera...
我有MainViewModel对象,其中包含很少的属性和命令(实现 ICommand)以及几个模型,其中包含其他属性和 observablecollections。
MainViewModel 不是一次填充数据,而是随着用户浏览应用程序并请求它的时间而填充。主要是因为有更多的网络服务可以从中收集 - 一些数据必须根据用户指定的标准收集(例如从哪个日期到哪个日期等)
我决定创建一个“持久”(不确定是否是正确的词)ViewModel,它将出现在整个应用程序中,因为我有时需要在页面中组合来自多个模型的数据
例如,我需要始终在页面上始终显示的“userInfoBar”中显示一些基本用户信息 + 我需要一些来自 DataGroup1Model 的信息和一些来自 DataGroup2Model 的信息(这些信息由来自两个 Web 服务的数据填充,并用于更多组合,然后就是这个一)。
网页服务
我正在使用 web 服务来收集数据以填充 viewModel。特别是一个具有 9 种方法的 web 服务,不知道如何描述它 - 每一种方法都给我一些关于某事的数据,这些数据我存储在 datagroupModels 中(有时是两个 datagroupmodels,如personalinfoModel 和 Datagroup1Model)。
网络服务已提供给我,我无法更改它们,我只能使用它们。
问题”
我正在尝试找出一种向我的页面发出信号表明某事已完成的好方法。例如登录顺序:
我有一个页面,其中包含两个 TextBoxes,其值绑定到MainViewModel属性UserName和Password以及一个绑定到MainViewModel中的Command Login的Button 。
login 命令只是启动“ doLogin ”方法,该方法使用用户名和密码属性并将其作为凭据提供给在添加 web 服务时由 Visual Studio 自动生成的webserviceclient实例,并且客户端执行其中一种 web 服务方法(异步方法) - 对于示例登录。
当此方法完成时,它会引发与其关联的Completed 事件并在其CompletedArguments中提供Result对象。
在完成的事件中,我将数据从 Result 对象复制到 viewModel。
此时,最好向 UI 发出一些信号,表明登录任务已完成并且应该导航到另一个页面。
我该怎么做?
有一些首选的方法吗?
PS:如果您对此处描述的内容有任何建议,我将很高兴听到它们。还请记住,我是一个菜鸟,所以我有时需要解释傻瓜或卡在一些基本和/或愚蠢的事情上。