Я новичок в программировании на .NET и пытаюсь изучить Silverlight 2 / C #.
Мне нужно объявить числовые константы (или, что еще лучше, переменные только для чтения) и получить к ним доступ как в XAML, так и в моем файле кода C #.
Эти значения более точно определены в XAML, но если определение должно быть сделано в C #, это лучше, чем жесткое кодирование значения в нескольких местах.
Я нашел решение для WPF XAML, но Silverlight, очевидно, не поддерживает синтаксис (и решение, которое я нашел, требовало, чтобы определения были в файле C #).
ТИА!
Ответ Михаилу
Я добавляю этот ответ в качестве комментария к своему первоначальному вопросу, потому что редактор комментариев не позволяет мне добавить столько текста, и я не смог найти другой способ ответить на ваш ответ.
Спасибо за ответ, Майкл, но я не могу заставить его работать.
Я начинаю с примера из «Pro Silverlight 2 в c # 2008».
Пример работает нормально, но требует от меня жесткого кодирования тех же двух значений в двух местах в моем XAML и в одном месте в моем C #.
Я реализовал ваше решение, и все было нормально, но когда я попытался выполнить код, я получил ошибку страницы в браузере. Я удалил все изменения и убедился, что все снова прошло нормально.
Затем я добавил объявление xmlns: sys и объявление sys: Int32 в мой файл App.xaml. Все снова работало нормально, но когда я попытался просмотреть файл Page.xaml в VS2008, я получил странную ошибку:
необъявленный префикс [Строка: 6 Позиция: 30] - Page.xmal, Строка 1, Столбец 1
Страница предварительного просмотра была пустой.
В строке 6, полке 30 файла Page.xaml не было ничего интересного, но в файле App.xaml это местоположение содержит закрывающий «>» непосредственно перед целочисленным значением 8:
<sys:Int32 x:Key="QAPS">8</sys:Int32>
Однако, если я нажму F5, приложение отлично работает в браузере.
Я использую VS2008 SP1 и набор инструментов Silverlight от 09 марта.
Я не могу понять, почему может вызываться объявление QAPS в разделе ресурсов приложения App.xaml, особенно учитывая, что я нигде не ссылаюсь на него в приложении. У вас есть идеи, что может происходить?
Еще один ответ Майклу
Вы правы, я не добавил объявление xmlns: sys в свой Page.xaml, но добавление его не имело значения - я все еще получаю ошибку 'undeclared prefix [Line: 6 Position: 30]' в Page.xaml (и приложение все еще работает). Так как все работает хорошо, я думаю, что это должно быть проблемой в VS2008.
Большая проблема заключалась в том, что я получал исключение во время выполнения, когда пытался получить доступ к QAPS из C #, и я выяснил, что я делал неправильно, чтобы вызвать его. Проблема заключалась в том, что я, по-видимому, получал доступ к ресурсу до его появления.
Я объявил / инициализировал приватную переменную для хранения значения ресурса на уровне класса; когда я переместил инициализацию в обработчик событий, проблема ушла. Поэтому я предполагаю, что переменные уровня класса C # оцениваются до создания ресурсов XAML.
(Кроме того, ограничение в 600 символов для комментариев - это настоящая боль. Как бы то ни было, я должен отредактировать свой исходный вопрос, чтобы опубликовать ответ).