2011-05-22 73 views
0

我有一個Silverlight 4應用程序使用EF & WCF RIA Services與SQL DB。我有一個任務表,我想要顯示在網格或列表框中,我想要進行自定義分組。自定義分組將過期,今天,未來7天和未來。在ViewModel中添加其他屬性

如果我正確理解MVVM的概念,我應該爲TasksViewModel中的Tasks對象創建一個自定義屬性。但我不知道如何做到這一點。

我有在實體數據模型中自動創建的任務實體,我在我的viewmodel中調用的DomainService中有一個GetTasks方法。

任何幫助將不勝感激。

回答

0

您應該可以從客戶端訪問這些類型。您可以在您的ViewModel上創建可綁定到的Task實體列表。

private List<Task> _tasks; 
public List<Task> Tasks 
{ 
    get { return _tasks; } 
    set { 
      _tasks = value; 
      NotifyPropertyChanged("Tasks"); 
      } 
} 

或者你可以創建一個客戶端端口映射到如果你不想直接綁定到實體。

+0

何時使用可觀察集合vs列表。 http://www.codeproject.com/KB/silverlight/SLListVsOCollections.aspx – 2011-05-22 20:11:59

0

以下與「苟平」無關,因爲它似乎不是你的問題。

我會怎麼做,是有ObservableCollection<Task>屬性:

public ObservableCollection<Task> Tasks {get; private set;} 

,我在構造函數初始化,請域上下文加載任務,然後填寫在回調中的數據來收集像這樣:

private TasksDomainContext context; 
public TasksViewModel() 
{ 
    Tasks=new ObservableCollection<Task>(); 
    context= new TasksDomainContext(); 
    LoadTasks(); 
} 
void LoadTasks() 
{ 
    context.Load(
     context.GetTasksQuery(), 
     callback => 
       { 
        if(callback.HasError) 
        { 
         //handle error 
        } 
        else 
        { 
         Tasks.Clear(); 
         foreach(var task in callback.Entities) 
          Tasks.Add(task); 
        } 
       }, 
     null); 
} 

希望這有助於;)

PS:如果你有與分組的問題,請提供更多的細節

+0

此示例可能存在問題,上下文對於ctor是本地的,並且在LoadTasks中使用。 – 2011-05-22 20:10:37

+0

@Derek:啊,是的,我重構了一個方法的負載調用,並忘記擴大上下文的範圍。謝謝:) – AbdouMoumen 2011-05-22 20:17:06

+0

對不起,如果我不清楚我的問題。您在我的視圖模型中已經包含的所有內容都顯示在您的答案中。現在我想添加一個名爲TaskGroup的屬性,該屬性基於與任務關聯的日期。對於集合中的每個任務,我都需要這個新屬性。因此,例如,如果任務的日期在幾天前被剔除,TaskGroup將爲「逾期」。如果日期爲下週,則TaskGroup將爲「Next 7 Days」。然後我想在TaskGroup上有我的gridview或listbox組。這是否更有意義? – AussieAtHeart 2011-05-23 06:58:25

相關問題