请提供RIA MVVM指导

请提供RIA MVVM指导,mvvm,telerik,wcf-ria-services,domainservices,Mvvm,Telerik,Wcf Ria Services,Domainservices,我一直在尝试实现MVVM,在很大程度上我真的很喜欢它。我已经找到了我大部分问题的答案,但有一件事我要么完全错过了,要么真的不明白。这是关于通过RIA服务从服务器发送的数据 在大多数在ViewModel中公开模型数据的示例中,似乎有两种方法之一,将整个模型作为属性公开我不喜欢这种方法: public class MyViewModel : [SomeBaseClass] { private MyModel _model; public MyModel Model {

我一直在尝试实现MVVM,在很大程度上我真的很喜欢它。我已经找到了我大部分问题的答案,但有一件事我要么完全错过了,要么真的不明白。这是关于通过RIA服务从服务器发送的数据

在大多数在ViewModel中公开模型数据的示例中,似乎有两种方法之一,将整个模型作为属性公开我不喜欢这种方法:

public class MyViewModel : [SomeBaseClass]
{
    private MyModel _model;

    public MyModel Model
    {
        get { return _model; }
        set
        {
            if(_model == value)
                return;
            _model = value;
            PropertyChanged("MyModel");
        }
    }
}
或者,实现要从模型公开到视图的各个特性。这是我一直在做的事情,但这是相当多的额外工作

许多使用对象列表的示例显示了公开ObservableCollection或某个版本的泛型集合的代码,其中TEntity是RIA生成的类,然后将其绑定到集合的控件项源等。好的,到目前为止还不错。但是当我需要处理基于绑定对象的命令时会发生什么呢?到目前为止,为了处理这个问题,我绑定了一个可观察集合。当我从服务器取回数据时,我循环返回的集合并将其转换为CustomViewModel并将其放入集合中。像这样:

LoadOperation load = Context.Load(Context.GetTasksForUserQuery(userId));
load.Completed += (s, e) =>
{
    if (!load.HasError)
    {
        _userTasks = new ObservableCollection<TaskItemViewModel>();

        foreach (Task entity in load.Entities)
            _userTasks.Add(new TaskItemViewModel(entity, Context));
    }
}
现在,我可以根据需要向TaskItemViewModel类添加命令等。但这并不理想

现在更新的一个很好的例子可以在这里找到: 该示例支持服务器端分页、筛选、分组等功能,效果非常好。它再次绑定到RIA对象的集合,在本例中是客户列表。如果我想/需要在绑定项级别处理一些命令,该怎么办

我错过了什么?我知道你可以有元类和共享代码,但从我的游戏/尝试来看,它似乎不符合要求。只绑定到的集合会容易得多。有没有办法做到这一点,并有我的附加命令?任何帮助/想法/意见都会很好

谢谢,,
Chris

我可以看出您的困惑,但您是否考虑过使用CommandParameters。您可以从datagrid传入SelectedItem。然后可以使用此绑定对象执行命令或操作。除了你的经验和别人的经验之外,没有什么真正的指导。我想说,仅仅使用实体的列表/可观察集合是没有问题的。如果您创建TaskViewModel,其中每个人都有一个实体和一个上下文,那么如果您的结果返回的结果超过数百个,则可能会导致内存问题。Rikkos,感谢您的评论,有时我会因为这样做而陷入困境,我看不到全局。你说的对,我的困境是我有一个Telerik RadGridView和一个复杂的细节视图。我用一个ViewModel绑定到网格,它包含了详细信息所需的所有命令等。就您的观点而言,我可以轻松地绑定到TEntity集合,然后将细节绑定到我更复杂的ViewModel,这样就不需要TEntity具有任何命令。