У меня есть небольшое тестовое приложение Silverlight 3.Это упражнение по изучению Silverlight, XAML, связывания и т. Д. У меня есть небольшой тестовый класс (Test), который имеет три свойства;Val1, Val2 и Sum.Я объявил ресурс в XAML следующим образом:
<UserControl.Resources>
<app:Test x:Name="xamlTestObj"></app:Test>
</UserControl.Resources>
У меня есть кнопка на пользовательском элементе управления.Код этой кнопки выглядит следующим образом:
xamlTestObj.Val1 += 100;
xamlTestObj.Val2 += 300;
Решение строится успешно, но при его запуске я получаю исключение NullReferenceException в обработчике кнопки при обращении к xamlTestObj.Я смог успешно выполнить нажатие кнопки, если вытащил объект из списка ресурсов пользовательского элемента управления.Например:
Test xamlTestObj = (Test)Resources["xamlTestObj"];
xamlTestObj.Val1 += 100;
xamlTestObj.Val2 += 300;
Что меня смущает, так это то, что мне нужно вытащить объект из списка ресурсов.Мне кажется, что если компилятор может видеть ссылку на xamlTestObj, он должен быть «живым» в течение всего срока действия области, в которой он объявлен (в данном случае, пользовательский элемент управления).Элементы управления WPF ведут себя таким образом.То есть я могу получить доступ к любым текстовым полям и кнопкам, которые я поместил в пользовательский элемент управления.
Может кто-нибудь прояснить это для меня?
Спасибо: -)