我正在尝试将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>
任何人都知道正确的绑定语法吗?
答案 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)
答案 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}"/>