Добавление дополнительных свойств в ViewModel - PullRequest
0 голосов
/ 22 мая 2011

У меня есть приложение Silverlight 4, использующее службы EF & WCF RIA с базой данных SQL.У меня есть таблица задач, которую я хочу отобразить в сетке или списке, и я хочу сделать пользовательскую группировку.Пользовательская группировка будет просрочена, сегодня, завтра, следующие 7 дней и в будущем.

Если я правильно понимаю концепции MVVM, мне следует создать собственное свойство для моего объекта Tasks в TasksViewModel.Но я не уверен, как это сделать.

У меня есть сущность Задачи, которая автоматически создается в модели данных сущности, и у меня есть метод GetTasks в DomainService, который я вызываю в своей модели представления.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 22 мая 2011

Следующее не имеет ничего общего с "gouping", так как это не ваша проблема.

То, что я хотел бы сделать, это иметь свойство 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);
}

Надеюсь, это поможет;)

P.S .: если у вас возникли проблемы с группировкой, просьба сообщить подробности

0 голосов
/ 22 мая 2011

Вы должны иметь доступ к этим типам с клиента.Вы можете создать список сущности Task в вашей ViewModel, к которой вы можете привязаться.

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

Или вы можете создать poco на стороне клиента для сопоставления, если вы не хотите привязывать напрямую к сущностям.

...