问题 一个超级简单的MVVM-Light WP7样本?


我正在寻找一个样本,以最轻微的方式演示以下内容:

一个调用基于SOAP的Web服务的模型;定期轮询以获取最新值(假设SOAP服务返回一个布尔值)。该模型还应支持调用更改服务器上布尔值的SOAP方法。

一个ViewModel,它允许底层布尔值绑定到View中的控件(例如,复选框)。

具有上述复选框控件的视图绑定到基础布尔值。根据轮询间隔,复选框将随服务器状态的变化而更新。如果单击该复选框,则会将事件分派给模型,从而导致服务器更新。

最好这个样本可以在Windows Phone 7上运行,但是在紧要关头我会对支持SL3的东西感到满意(不允许使用SL4命令路由)。

我正在努力了解如何让MVVM-Light为我工作,我怀疑专家可以很快地编写样本代码...我也怀疑这是很多应用程序的相当常见的模式。


5455
2017-09-07 02:48


起源

从移动设备轮询服务器充其量只是代码味道,但通常是反模式,因为它具有资源使用含义。您应该考虑让服务器进程在服务返回的值发生更改时发送通知。如果您能够展示您尝试过的内容以及遇到的问题,您也可能会获得更多帮助。要求某人编写一个工作示例很少是获得帮助的成功策略。 - Matt Lacey
关于为某人编写具有特定要求的应用程序的公平评论,但是如果有一个样本可用于展示至少一个可以链接的主要基础知识,那么这是一个开始构建。 - Mick N


答案:


Mick N的指针有所帮助,但真正让我超越驼峰的是Jeremy Likness的这篇文章: http://csharperimage.jeremylikness.com/2010/04/model-view-viewmodel-mvvm-explained.html

这是为了他人利益的样本(假设我没有做任何真正愚蠢的事情):

首先,我开始使用Mvvm-Light Windows Phone 7项目。

我在MainPage.xaml中添加了一个复选框:

    <CheckBox Content="Switch 1" 
              IsChecked="{Binding Switch1.PowerState, Mode=TwoWay}"
              Height="72" HorizontalAlignment="Left" Margin="24,233,0,0" 
              Name="checkBox1" VerticalAlignment="Top" Width="428" />


8
2017-09-08 06:56



就模型问题而言,在WP7中,我使用模型类来读取/写入瞬态存储器和隔离存储器。 ViewModel用于呈现要由Views / Pages绑定的数据。如果您将模型用作视图模型,那么它可能应该是视图模型。 - Matt Casto
我更喜欢在App.xaml.cs的Appliance_Launching和Appliance_Activated方法中调用DispatcherHelper.Initialize()。 - Matt Casto
谢谢Matt - 为什么在_Launching&_Activated而不是在构造函数中? - tig
因为否则当应用程序从逻辑删除返回时可能无法重新初始化


查看最近由wp7论坛链接的Joost van Schaik发布的这篇博文(来自内存中的kP?)。

http://dotnetbyexample.blogspot.com/2010/07/using-mvvm-light-to-drive-windows-phone.html

我怀疑你会找到一个“样本”,它也恰好实现了你的“要求”,但至少有一个样本可以做你的问题标题所描述的,你可以学习,然后将更详细的要求应用到它。


3
2017-09-07 10:00



Joost的例子对我也很有帮助。它并不像我希望的那么简单,但确实暴露了一些关键模式。谢谢。 - tig
yw :) / 15char .. - Mick N