Привязка Silverlight к объекту модели: не может заставить его работать - PullRequest
0 голосов
/ 18 февраля 2010

У меня есть следующий сценарий (я использую Silverlight4 Beta):

UserControl A: -> DataContext - это объект класса MyModel, который содержит свойства Property01 (CustomClass), Property02 (CustomEnum).Класс MyModel реализует INotifyPropertyChanged, и все свойства вызывают событие PropertyChanged всякий раз, когда они могут изменяться.

UserControl B: -> DataContext должен быть объектом типа (CustomClass) -> DependencyProperty MyProperty типа (CustomEnum)

My UserControlA будет содержать UserControlB, и я хотел бы связать свойства следующим образом (из XAML):

-> UserControlB.DataContext = UserControlA.DataContext.Property01
-> UserControlB.MyProperty = UserControlA.DataContext.Property02

<!-- DataContext = MyModel -->
<Grid x:Name="LayoutRoot">

    <foo:UserControlB x:Name="xpto" DataContext="{Binding Property01}" MyProperty="{Binding Property02}" />

</Grid>

Придумывание вещей, как описано выше, устанавливает для DataContext UserControlB правильное значение, однако привязка к UserControlB.MyProperty никогда не происходит.Если я удалю оператор DataContext = "{Binding Property01}", тогда произойдет привязка UserControlB.MyProperty.

Может кто-нибудь объяснить, если я делаю что-то, что повторяет универсальные законы Silverlight: -)

Большое спасибо заранее, Бруно

1 Ответ

1 голос
/ 18 февраля 2010

Способ настройки XAML для привязки в настоящее время:

-> UserControlB.DataContext = UserControlA.DataContext.Property01
-> UserControlB.MyProperty = UserControlB.DataContext.Property02

Способ:

MyProperty="{Binding Property02}"

Работает так, что он говорит Привязка к свойству "Property02" на моемDataContext, если у меня нет DataContext, проверьте мои родительские данные DataContext и поднимите дерево до тех пор, пока не найдет DataContext.

Однако оно не продолжит вверх по дереву, если DataContext не имеет свойства с именем"Property02"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...