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