2011-10-11 79 views
2

我正在學習用於WP7的Silverlight,並偶然發現了MVVM Light工具包。我認爲學習最新的東西是個好主意,所以我安裝了V4 Beta。可悲的是,沒有任何文件(但?)。 在模型文件夾中有3個文件,DataItem,DataService和IDataService。MVVM-Light工具包中的IDataService V4 Beta

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只包含一個字符串(或者它是否被用作基類?)。

回答

4

我已經成功地使用IDataService來提供測試和虛擬數據鉤子。你擁有的代碼就是你應該如何使用它的例子。 DataItem是表示來自數據庫或服務的數據的「實體」或「DTO(數據傳輸對象)」的示例。如果您使用的是WCF,那麼它將是您執行「添加服務引用」時生成的對象。 DataService類是接口的表示。這個DataService類將有方法調用真正的Web服務並執行CRUD操作。您還可以擁有一個具有相同方法的DesignTimeDataService:IDataService,但在內存中使用foreach創建數據。然後,您可以使用IoC或其他依賴注入來在運行時注入實現。

在我在Silverlight App.xaml.cs,我創建一個IDataService和使用,在整個我的應用程序:

IDataService ds = ViewModelBase.IsDesignTimeStatic // from the MVVMLight toolkit 
? (IDataService) new DesignTimeDataService() 
: (IDataService) new DataService(); 
+0

哦,上帝,我現在覺得很蠢..謝謝。 – SBoss

+1

很高興能幫到你。不要擔心,這就是我們學習的方式。 – Aligned

0

結構提供形式MVVM燈,還有的例子,被認爲與您的應用連接到服務。

勞倫特解釋說在他的視頻Understanding the Model-View-ViewModel Pattern

這裏DEEP DIVE MVVM at #MIX11

有模型的一個很好的解釋。

我所做的是用我的onw庫替換DataService以通過異步HTTPRequest訪問REST模式。 由於異步通信的本質,我決定不使用callback(),所以我刪除了它,但是使用消息通過消息的有效載荷發回數據。

在我的理解你必須使用這些類作爲ViewModels初始化與IDataService作爲參數,我還沒有找到任何方式來改變它。

希望有所幫助。