在Silverlight中仅检索具有MVVM灯光的一个项目
要将WCF数据服务中的某些内容捕获到我的视图模型中,非常简单:在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
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)