Silverlight 2错误代码:4004

时间:2008-12-12 00:08:11

标签: silverlight silverlight-2.0

嘿伙计们/加尔斯。我有一个silverlight 2应用程序,它有一个来自单独的assem / lib的类的ObservableCollection。当我在该集合上设置ListBox.ItemsSource并运行它时,我得到错误代码:4004“System.ArgumentException:Value不在预期范围内。” 以下是代码的一部分:

public partial class Page : UserControl
{
    ObservableCollection<Some.Lib.Owner> ooc;

    public Page()
    {

        ooc = new ObservableCollection<Some.Lib.Owner>();
        Some.Lib.Owner o1 = new Some.Lib.Owner() { FirstName = "test1" };
        Some.Lib.Owner o2 = new Some.Lib.Owner() { FirstName = "test2" };
        Some.Lib.Owner o3 = new Some.Lib.Owner() { FirstName = "test3" };
        ooc.Add(o1);
        ooc.Add(o2);
        ooc.Add(o3);

        InitializeComponent();
        lb1.ItemsSource = ooc;
    }
}

但是当我在同一个项目中创建Owner类时,一切正常。 幕后会发生一些安全问题吗?另外,当我创建这个Silverlight 2应用程序时,我正在使用生成html页面选项而不是aspx选项。

3 个答案:

答案 0 :(得分:1)

您是否尝试使用标准类库或“Silverlight类库”?

由于Silverlight 2使用CLR的子集,因此无法访问使用完整CLR编译的标准类库。要使用外部程序集,必须将其创建为“Silverlight类库”。这将创建一个仅包含Silverlight可用命名空间的项目,并允许您在Silverlight项目中引用该程序集。

有关详细信息,请查看MSDN文章".NET Framework Class Library for Silverlight"

答案 1 :(得分:0)

可能是因为您没有在SubmittedChanges()中处理失败。有关详细信息,请参阅http://www.scottleckie.com/2010/04/code-4004-unhandled-error-in-silverlight-application/

答案 2 :(得分:0)

现在一切都在一个项目中。

是,但不像您刚才那样做,而是共享链接到文件。

为此,当需要在应用程序和服务之间共享通用的entity代码时,这是Silverlight的一个古老的“绝地秘诀” 。当由于.Net / CLR的差异而无法导入该库时,将执行此操作。

诀窍是将文件作为 link 包含到另一个项目中。这是

  1. 在需要代码文件的目标(Silverlight项目)文件夹中,右键单击并选择Add,然后依次选择Existing Item...shift alt A。 / li>
  2. 浏览到找到的原始文件的位置,然后选择该文件。
  3. 选择完项目后,然后在Add按钮上选择下拉箭头。
  4. 选择Add as link将文件作为链接添加到文件夹中。

enter image description here

完成后,只有一个副本,但是建立在两个不同的地方。

这将授予对文件的访问权限,就好像文件实际位于项目的文件夹中一样,但是文件实际上位于其他地方...并且避免了CLR问题。