3

我有一个 silverlight 2 应用程序,它有一个来自单独的 assem/lib 的类的 ObservableCollection。当我在该集合上设置 ListBox.ItemsSource 并运行它时,我收到错误代码:

4004 “System.ArgumentException:值不在预期范围内。”

以下是部分代码:

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 选项。

4

3 回答 3

1

您是在尝试使用标准类库还是“Silverlight 类库”?

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

查看 MSDN 文章“用于 Silverlight 的 .NET Framework 类库”以获取更多信息。

于 2008-12-17T00:47:53.240 回答
0

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

于 2010-04-24T00:52:34.190 回答
0

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

是的,但不像你刚才那样做,而是分享、链接到文件。

当需要在应用程序和服务之间共享公共代码时,这是一个古老的 Silverlight 绝地思维技巧。entity这是在由于 .Net/CLR 中的差异而无法引入库时完成的。

诀窍是将文件作为链接包含到另一个项目中。这是如何

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

在此处输入图像描述

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

这样就可以访问该文件,就好像该文件实际上位于项目的文件夹中一样,但该文件实际上位于其他地方……并避免了 CLR 问题。

于 2020-12-17T01:19:35.550 回答