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