Silverlight 2 ArgumentException

У меня есть приложение silverlight 2, в котором есть ObservableCollection класса из отдельной сборки / библиотеки. Когда я устанавливаю свой ListBox.ItemsSource в этой коллекции и запускаю ее, я получаю код ошибки:

4004 "System.ArgumentException: Value does not fall within the expected range."

Вот часть кода:

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 в этом же проекте, все работает нормально. Что-то происходит за кулисами? Кроме того, я использую параметр создания страницы html, а не параметр aspx, когда создавал это приложение Silverlight 2.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
5 451
3

Ответы 3

Вы пытаетесь использовать стандартную библиотеку классов или «библиотеку классов Silverlight»?

Поскольку Silverlight 2 использует подмножество CLR, он не может получить доступ к стандартным библиотекам классов, которые были скомпилированы с использованием полной CLR. Чтобы использовать внешнюю сборку, вы должны создать ее как «библиотеку классов Silverlight». Это создаст проект, который включает только пространства имен, доступные для Silverlight, и позволит вам ссылаться на сборку в вашем проекте Silverlight.

Ознакомьтесь со статьей MSDN «Библиотека классов .NET Framework для Silverlight» для получения дополнительной информации.

Да, я создал ее как библиотеку классов Silverlight. После бесчисленных часов поиска в Google я просто сдался. Теперь все в одном проекте.

jkidv 18.12.2008 20:35

Это может быть потому, что вы не обрабатываете сбой в SubmittedChanges (). См. http://www.scottleckie.com/2010/04/code-4004-unhandled-error-in-silverlight-application/ для получения дополнительной информации.

Everything is in one project now.

Да, но не так, как вы только что это сделали, вместо этого поделитесь, ссылка на файлом (ами).

Для этого используется старый трюк с разумом джедаев Silverlight, когда необходимо использовать общий код entity между приложением и службой. Это делается, когда библиотека не может быть загружена из-за различий в .Net / CLR.

Уловка состоит в том, чтобы включить файл как связь в другой проект. Вот как

  1. В целевой папке (проект Silverlight), для которой требуется файл кода, щелкните правой кнопкой мыши и выберите Add, затем Existing Item... или shiftaltA.
  2. Перейдите к местоположению найденных исходных файлов и выберите / эти файлы.
  3. После выбора элемента (ов) нажмите кнопку Add и выберите стрелку раскрывающегося списка.
  4. Выберите Add as link, чтобы добавить файл (ы) в качестве ссылки в папку.

После этого остается только одна копия, но построенная в двух разных местах.

Это даст доступ к файлу будто, файл фактически находился в папке проекта, но физически файл находится в другом месте ... и позволяет избежать проблем со средой CLR.

Другие вопросы по теме