我正在学习WP7的Silverlight,偶然发现了MVVM Light工具包。我认为学习最新的东西是一个好主意,因此我安装了V4 Beta。遗憾的是,还没有任何文档(还?)。
在模型文件夹中,有3个文件,DataItem,DataService和IDataService。
public class DataItem
{
public DataItem(string title)
{
Title = title;
}
public string Title { get; private set; }
}
public class DataService : IDataService
{
public void GetData(Action<DataItem, Exception> callback)
{
// Use this to connect to the actual data service
var item = new DataItem("Welcome to MVVM Light");
callback(item, null);
}
}
public interface IDataService
{
void GetData(Action<DataItem, Exception> callback);
}
MainViewModel使用这些类来获取属性的值。
现在开始提问:您应该使用这些类(特别是IDataService)吗? 我似乎无法找到有效使用它们的方法,因为DataItem仅包含一个字符串(或者它打算用作基类?)。
最佳答案
我已经成功地使用IDataService提供了一个测试和虚拟数据挂钩。您拥有的代码是如何使用它的示例。 DataItem是表示来自数据库或服务的数据的“实体”或“DTO(数据传输对象)”的示例。如果您使用的是WCF,则将是执行“添加服务引用”时生成的对象。 DataService类是接口(interface)的表示形式。该DataService类将具有调用实际Web服务并执行CRUD操作的方法。您还可以拥有具有相同方法的DesignTimeDataService:IDataService,但是使用内存中的foreach创建数据。然后,您可以使用IoC或其他依赖注入(inject)在运行时注入(inject)实现。
在Silverlight的App.xaml.cs中,创建一个IDataService并将其用于整个应用程序:
IDataService ds = ViewModelBase.IsDesignTimeStatic // from the MVVMLight toolkit
? (IDataService) new DesignTimeDataService()
: (IDataService) new DataService();
关于wpf - MVVM-Light工具箱V4 Beta中的IDataService,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7725657/