使用绑定到依赖项属性的RIA查询参数时,域数据源CanLoad为false

时间:2011-03-21 13:51:30

标签: silverlight dependency-properties ria domaindatasource

我有一个ria DDS查询,其参数绑定到我的silverlight页面后面的代码的依赖项属性。问题是,一旦项目依赖项发生变化,我就会收到以下错误。

当CanLoad为false时,无法更改QueryParameters。更改QueryParameters会启动加载操作,并且当CanLoad为false时,不允许加载操作。当CanLoad为false时,应禁用调用加载操作的控件。

我对如何完成或取消加载感到茫然,所以每次从列表中选择一个新项目时我都可以更改项目的详细信息视图。

<riaControls:DomainDataSource AutoLoad="True" d:DesignData="{d:DesignInstance my1:XT_PROJECTS, CreateList=true}" Height="0" LoadedData="ProjectDetailsDomainDataSource_LoadedData" Name="ProjectDetailsDomainDataSource" QueryName="getProjectDetails"  Width="0" >
        <riaControls:DomainDataSource.DomainContext>
            <my:MYservices />
        </riaControls:DomainDataSource.DomainContext>
        <riaControls:DomainDataSource.QueryParameters>
            <riaControls:Parameter ParameterName="project" Value="{Binding ElementName=ProjectDetailsPage, Path=project}" />
        </riaControls:DomainDataSource.QueryParameters>
    </riaControls:DomainDataSource>

public static readonly DependencyProperty projectIDDP =
    DependencyProperty.Register("project", typeof(string),typeof(ProjectDetails),
    new PropertyMetadata(""));
 public string projectID
    {
        get
        {
            return (string)GetValue(projectIDDP);
        }
        set
        {
            SetValue(projectIDDP, value);
        }
    }

2 个答案:

答案 0 :(得分:1)

经过一番研究后,我现在非常确定您的上下文中必须有待更改。在这种情况下,DomainDataSources“阻止”,你不能为它们加载。

如果在不同的情况下发生此错误,我将非常有兴趣对此进行更正。

如果您有待处理的更改,则您的解决方案是

  1. 阻止用户输入(可能是您负载的最终原因),例如通过禁用表单或
  2. 为提交和DomainDataSource使用不同的上下文(然后您将使用RiaServicesContrib在上下文之间复制实体)。

答案 1 :(得分:0)

这是否可以在更改参数之前添加提交? 像这样

set
{ 
    if (xyzDomainDataSource.HasChanges)
        xyzDomainDataSource.SubmitChanges();
    SetValue(projectIDDP, value);        
}