Silverlight 4.0 在ViewModel中添加其他属性

Silverlight 4.0 在ViewModel中添加其他属性,silverlight-4.0,mvvm,wcf-ria-services,Silverlight 4.0,Mvvm,Wcf Ria Services,我有一个Silverlight 4应用程序,使用EF&WCF RIA服务和SQL DB。我有一个任务表,我想显示在网格或列表框中,我想进行自定义分组。自定义分组将在今天、明天、未来7天和将来过期 如果我正确理解MVVM的概念,我应该在TasksViewModel中为我的Tasks对象创建一个自定义属性。但我不知道如何做到这一点 我有在实体数据模型中自动创建的Tasks实体,我在DomainService中有一个GetTasks方法,我在viewmodel中调用它 任何帮助都将不胜感激。您应该可以

我有一个Silverlight 4应用程序,使用EF&WCF RIA服务和SQL DB。我有一个任务表,我想显示在网格或列表框中,我想进行自定义分组。自定义分组将在今天、明天、未来7天和将来过期

如果我正确理解MVVM的概念,我应该在TasksViewModel中为我的Tasks对象创建一个自定义属性。但我不知道如何做到这一点

我有在实体数据模型中自动创建的Tasks实体,我在DomainService中有一个GetTasks方法,我在viewmodel中调用它


任何帮助都将不胜感激。

您应该可以从客户端访问这些类型。您可以在ViewModel上创建一个任务实体列表,以便绑定到该列表

private List<Task> _tasks;
public List<Task> Tasks
{
     get { return _tasks; }
     set {
          _tasks = value;
          NotifyPropertyChanged("Tasks");
          }
}
private List\u任务;
公开列表任务
{
获取{return\u tasks;}
设置{
_任务=价值;
NotifyPropertyChanged(“任务”);
}
}

如果不想直接绑定到实体,也可以创建要映射到的客户端poco

以下内容与“挖坑”无关,因为这似乎不是你的问题

我要做的是拥有一个属性
ObservableCollection

publicobservableCollection任务{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);
}
私有任务域上下文;
公共任务VIEWMODEL()
{
任务=新的ObservableCollection();
上下文=新任务DomainContext();
LoadTasks();
}
void LoadTasks()
{
加载上下文(
context.GetTasksQuery(),
回调=>
{
if(callback.HasError)
{
//处理错误
}
其他的
{
任务。清除();
foreach(callback.Entities中的var任务)
任务。添加(任务);
}
},
无效);
}
希望这有帮助;)


备注:如果您在分组方面遇到问题,请提供更多详细信息

此示例可能有问题,上下文是构造函数本地的,用于LoadTasks。@Derek:啊,是的,我重构了方法的加载调用,但忘了扩大上下文的范围。谢谢:)对不起,我的问题不清楚。您在回答中显示的所有内容我都已在viewmodel中。现在我想添加一个名为TaskGroup的属性,该属性基于与任务关联的日期。对于集合中的每个任务,我都需要此新属性。因此,例如,如果任务的日期是几天前,任务组将“过期”。如果日期是下周,工作组将是“未来7天”。然后我想在任务组上有我的gridview或listbox组。这更有意义吗?何时使用可观察的集合与列表。
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);
}