У меня есть следующий код XAML как часть пользовательского элемента управления:
<telerik:RadTreeView x:Name="treeModules">
<telerik:RadTreeView.ItemTemplate>
<core:HierarchicalDataTemplate ItemsSource="{Binding Submodules}">
<local:ModuleInfoUserControl IsReadOnly="{Binding ElementName=ctrlIsReadOnly, Path=IsReadOnly}"/>
</core:HierarchicalDataTemplate>
</telerik:RadTreeView.ItemTemplate>
</telerik:RadTreeView>
Где:
- Свойство
ItemsSource
treeModules
устанавливается по коду в список
Module
объектов. Module
класс
имеет свойство с именем Submodules
,
который состоит из коллекции
больше модулей.
ModuleInfoUserControl
это обычай
управление используется для отображения модуля
Информация. IsReadOnly
является
свойство зависимости объявлено на
управление.
ctrlIsReadOnly
- это скрытый текстовый ящик
определены в другом месте в основном пользователе
контроль. Это используется, чтобы сделать кучу
элементов управления редактируемые или только для чтения.
Проблема: привязка к элементу ctrlIsReadOnly
в ModuleInfoUserControl
не работает. Свойство IsReadOnly
всегда находится в состоянии по умолчанию, даже если соответствующее свойство crlIsReadOnly
изменяется.
Но , если я изменю RadTreeView на стандартный Silverlight TreeView и HierarchicalDataTemplate на стандартную версию Silverlight, он будет работать как положено.
Хорошо, до сих пор я вставил точную копию билета поддержки, который я отправил Telerik в надежде, что они могут мне помочь. Я должен сказать, что ответ был быстрым и настолько эффективным, насколько это возможно: они сказали мне, что не могут воспроизвести ошибку, и прислали мне небольшой тестовый проект, который выполняет оскорбительный фрагмент кода. Тестовый проект показывает ошибку на моей машине, но работает на Telerik.
И тут начинается действительно странная часть. Я опубликовал пример проекта Telerik на своем персональном сайте. Вот ссылка:
http://www.konamiman.com/TelerikTest/TestPage.html
Идея состоит в том, что при нажатии кнопки «ToggleIsReadOnly» текстовый блок «Root» должен стать доступным только для чтения. Но опять же, это работает на машинах Telerik, но не на моей! Так что сам код приложения выглядит нормально.
Думая, что это может быть проблемой во время выполнения Silverlight на моей машине, я протестировал кучу других, в том числе: испанскую Windows 7 32 и 64-битную, испанскую Windows XP, английскую Windows Server 2008 и даже на компьютере моей жены с Японская Windows XP. На всех них он НЕ работает, как ожидалось .
Итак, что здесь происходит? Я полностью застрял.
Кстати, Silverlight Runtime, который я использую, это версия 3.0.50106.0.
ОБНОВЛЕНИЕ: Я также загрузил исходный код тестового проекта. Вот URL:
http://www.konamiman.com/TelerikTest/TreeViewTest.zip