Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Silverlight中仅检索具有MVVM灯光的一个项目_Silverlight_Mvvm Light - Fatal编程技术网

在Silverlight中仅检索具有MVVM灯光的一个项目

在Silverlight中仅检索具有MVVM灯光的一个项目,silverlight,mvvm-light,Silverlight,Mvvm Light,要将WCF数据服务中的某些内容捕获到我的视图模型中,非常简单: public const string RequestsPropertyName = "Requests"; private DataServiceCollection<Request> _requests = null; public DataServiceCollection<Request> Requests { get { return _requests; } set { if

要将WCF数据服务中的某些内容捕获到我的视图模型中,非常简单:

public const string RequestsPropertyName = "Requests";
private DataServiceCollection<Request> _requests = null;
public DataServiceCollection<Request> Requests
{
  get { return _requests; }

  set
  {
    if (_requests == value) { return; }

    var oldValue = _requests;
    _requests = value;

    RaisePropertyChanged(RequestsPropertyName, oldValue, value, true);
  }
}
但是如果我有一个不是集合的财产呢

public const string RequestDetailsPropertyName = "RequestDetails";
private Request _requestDetails = null;
public Request RequestDetails
{
  get { return _requestDetails; }
等等。 我从哪里获得“LoadAsync(query)”方法

谢谢,


Ueli

这是一件非常简单的事情。您只需要在应用程序中使用DomainContext。这是创建查询的基础,然后将结果应用于属性

下面是一个示例,说明这在代码中可能是什么样子:

    void LoadRequest(int requstID)
    {
        var query = workContext.GetRequestByIDQuery(requestID);
        workContext.Load(query, lo =>
        {
            DispatcherHelper.CheckBeginInvokeOnUI(() =>
                    {
                        if (lo.HasError)
                            throw lo.Error;
                        else
                            RequestDetails = lo.Entities.Single();
                    });
        }, null);
    }
在本例中,workContext对象是DomainContext。查询是服务器上的一个特定版本-您也可以使用以下内容构建查询客户端:

.Where(r => r.RequestID == requestID)  
在异步调用之后,它将处理异步调用中发生的任何错误,然后返回返回的唯一实体。如果获得的实体超过1个,则可以改用.First()


如果这还不足以让您继续,请告诉我,我可以进一步解释。

嗨,Ryan,谢谢您的回答。我陷入了以下困境:在我的上下文中没有“加载”方法。此外,我不太确定在您的示例中,上下文如何知道我刚才所说的内容(可以使用“BeginSaveChanges”方法将更改保存回)。我错过什么了吗?谢谢你,尤利索里,我以为你会使用RIA服务。也许您正在直接使用WCF服务?如果是这样,请发布代码以显示在代码中创建查询对象的位置,如第二个对象中所述。这必须发生在连接对象上。DataServiceCollection只是一个集合。它不是连接对象。
.Where(r => r.RequestID == requestID)