Привязка к свойству родительского элемента в Silverlight - PullRequest
2 голосов
/ 30 октября 2009

Я пытаюсь привязать свойство элемента в UserControl к свойству, установленному в самом UserControl в Silverlight. Я уверен, что это должно быть просто, но мне не удалось заставить его работать с привязкой RelativeSource или ElementName. В этом примере я хочу, чтобы Rectangle был зеленым (или любым другим свойством, заданным для свойства Background в UserControl).

<UserControl x:Class="MyUserControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="40" Height="40" Background="Green" x:Name="root">
    <Grid x:Name="LayoutRoot" Background="White">
        <Rectangle x:Name="indicatorRectangle" Fill="{Binding Path=Background, ElementName=root}" Margin="0,0,26,0"  />
    </Grid>
</UserControl>

Кто-нибудь знает правильный синтаксис привязки?

Ответы [ 4 ]

2 голосов
/ 04 мая 2010

интересно, XAML, который я разместил в исходном вопросе, корректно работает в VS2010, поэтому я предполагаю, что это было исправлено в последней версии Silverlight

2 голосов
/ 07 ноября 2010

Имейте в виду, что этот код сломается, если вы используете пользовательский элемент управления и задаете имя (в Silverlight 4.0, Visual Studio 10) с помощью x:Name=.

2 голосов
/ 30 октября 2009

Попробуйте это:

<UserControl ... Background="Green" x:Name="root">    
  <Grid x:Name="LayoutRoot" Background="White">        
    <Rectangle x:Name="indicatorRectangle" 
         Fill="{Binding Background, ElementName=root}" Width="10" Height="10"  />
  </Grid>
</UserControl>

Это не сработало для меня, пока я не дал прямоугольнику ширину и высоту.

0 голосов
/ 01 марта 2013

Это берет первого предка типа MyUserControl и связывается с ним.

xmlns:controls="namespace of your control" ...

<Rectangle x:Name="indicatorRectangle" Fill="{Binding Path=Background 
RelativeSource={RelativeSource AncestorLevel=1,AncestorType=controls:MyUserControl}"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...