在Silverlight中绑定父元素的属性

时间:2009-10-30 14:19:32

标签: silverlight data-binding user-controls

我正在尝试将UserControl中元素的属性绑定到Silverlight中UserControl本身上的属性集。我确信它应该很简单,但我还没有设法使用RelativeSource或ElementName绑定。在这个例子中,我希望Rectangle为Green(或者UserControl的Background属性设置为)。

<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 个答案:

答案 0 :(得分:2)

试试这个:

<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>

直到我给矩形一个宽度和高度它才对我有效。

答案 1 :(得分:2)

有趣的是,我在原始问题中发布的XAML在VS2010中正常工作,所以我认为这是在最新的Silverlight中修复的内容

答案 2 :(得分:2)

请记住,如果您使用用户控件并使用x:Name=设置名称(在Silverlight 4.0,Visual Studio 10中),此代码将会中断。

答案 3 :(得分:0)

这将采用MyUserControl类型的第一个祖先并绑定它。

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

<Rectangle x:Name="indicatorRectangle" Fill="{Binding Path=Background 
RelativeSource={RelativeSource AncestorLevel=1,AncestorType=controls:MyUserControl}"/>