Я создаю приложение для Windows Phone 7. Итак, я использую SilverLight 3 (.7) и у меня возникла небольшая проблема с пользовательскими элементами управления, которые я создал. Вот как я это делаю сейчас:
UserControl имеет свойство DependencyProperty с именем Number
<UserControl x:Class="MyUserControl" x:Name="myUserControl">
<TextBlock Text="{Binding ElementName=myUserControl, Path=Number}"/>
</UserControl>
Чтобы использовать это, я просто делаю:
<MyUserControl Number="{Binding ElementName=MyPage, Path=SomeNumber}">
<MyUserControl Number="{Binding ElementName=MyPage, Path=SomeOtherNumber}">
Все это прекрасно работает, но если я добавлю имя к одному из двух экземпляров моего контроля, все пойдет не так. Например:
<MyUserControl x:Name="SomeNumberControl"
Number="{Binding ElementName=MyPage, Path=SomeNumber}">
<MyUserControl Number="{Binding ElementName=MyPage, Path=SomeOtherNumber}">`
Тогда данные не отображаются. Похоже, что данное имя переопределяет имя, указанное в UserControl, и привязки не работают.
Итак, я попытался выполнить привязку через текст данных. И установка DataContext для UserControl.
Итак, мой контроль стал:
<UserControl x:Class="MyUserControl"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<TextBlock Text="{Binding Number}"/>
</UserControl>
С этим ничто не связывается. Это похоже на то, что текст данных никогда не устанавливается и даже более странно, когда я помещаю этот элемент управления в другой созданный мной пользовательский элемент управления. Кажется, что родительский элемент управления теперь каким-то образом связан с экземпляром MyUserControl.
Поэтому, когда я делаю следующее:
<MyPage>
<MyUserControl Number={Binding SomeNumber}"/>
Я получаю ошибку,
SomeNumber не найден в типе MyUserControl.
Как будто привязка для родительского элемента управления теперь является экземпляром MyUserControl. Я просто делаю что-то в корне неправильно в том, как я делаю привязки в моем пользовательском элементе управления, или это что-то странное в SilverLight 4 и WP7.
Любая помощь в этом очень приветствуется.