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 2异常_Silverlight_Silverlight 2.0 - Fatal编程技术网

Silverlight 2异常

Silverlight 2异常,silverlight,silverlight-2.0,Silverlight,Silverlight 2.0,我有一个silverlight 2应用程序,它可以从一个单独的assem/lib中观察到一个类的集合。当我在该集合上设置ListBox.ItemsSource并运行它时,会得到错误代码: 4004“System.ArgumentException:值不在预期范围内 以下是代码的一部分: public partial class Page : UserControl { ObservableCollection<Some.Lib.Owner> ooc; public

我有一个silverlight 2应用程序,它可以从一个单独的assem/lib中观察到一个类的集合。当我在该集合上设置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;
    }
}
public部分类页面:UserControl
{
可观察收集ooc;
公共网页()
{
ooc=新的ObservableCollection();
Some.Lib.Owner o1=新建Some.Lib.Owner(){FirstName=“test1”};
Some.Lib.Owner o2=新的Some.Lib.Owner(){FirstName=“test2”};
Some.Lib.Owner o3=新的Some.Lib.Owner(){FirstName=“test3”};
ooc.添加(o1);
ooc.添加(o2);
添加(o3);
初始化组件();
lb1.ItemsSource=ooc;
}
}
但是当我在同一个项目中创建Owner类时,一切都很好。
在幕后有什么安全措施吗?另外,当我创建这个Silverlight 2应用程序时,我使用的是生成html页面选项而不是aspx选项。

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

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


查看MSDN文章了解更多信息。

这可能是因为您没有处理SubmittedChanges()中的故障。有关更多信息,请参阅

现在一切都在一个项目中

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

对于这一点,当需要在应用程序和服务之间共享公共<代码>实体代码时,使用Silverlight的绝地思维老把戏。如果由于.Net/CLR中的差异而无法引入库,则会执行此操作

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

  • 在需要代码文件的目标(Silverlight项目)文件夹中,右键单击并选择
    Add
    ,然后选择
    Existing Item…
    shift
    alt
    A
  • 浏览到找到的源文件的位置,然后选择这些文件
  • 选择项目后,在
    Add
    按钮上选择下拉箭头
  • 选择“添加为链接”,将文件作为链接添加到文件夹中
  • 一旦完成,只有一个副本,但在两个不同的地方建立


    这将允许访问该文件,就像该文件实际上位于项目文件夹中一样,但该文件实际位于其他位置……并避免CLR问题。

    是的,我将其创建为Silverlight类库。在无数个小时搜索“谷歌”之后,我放弃了。现在一切都在一个项目中。