RIA MVVM指南请

时间:2012-04-24 02:19:56

标签: mvvm telerik wcf-ria-services domainservices

我一直在尝试实现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");
        }
    }
}

OR,实现要从模型公开到视图的各个属性。这是我一直在做的方式,但这是相当多的额外工作。

使用对象列表的许多示例显示代码,该代码公开ObservableCollection<TEntity>(或某个版本的泛型集合),其中TEntity是由RIA生成的类,然后将其绑定到控件ItemsSource等。采集。好的,到目前为止一切顺利。但是当我需要根据绑定对象处理命令时会发生什么?到目前为止,我处理这个ObservableCollection<CustomViewModel>。当我从服务器获取数据时,我遍历返回的集合并将其“转换”为我的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类添加命令等。但这并不是最佳的。

这里有一个很好的例子(现在约会):An MVVM Approach to Telerik Domain Services for Silverlight 该示例启用服务器端分页,过滤,分组等,并且运行良好。它再次绑定到RIA对象的集合,在这种情况下是客户列表。如果我想/需要在绑定项目级别处理某些命令怎么办?

我错过了什么?我知道你可以有元类和共享代码,但从我的播放/尝试它似乎不符合要求。能够绑定到<RIAObject>的集合会容易得多。有没有办法做到这一点并拥有我的“附加”命令?任何帮助/思考/输入都会很棒!

谢谢你, 克里斯

0 个答案:

没有答案