正确的绑定是在绑定到另一个元素时使用ElementName,而不是Source:
<Canvas>
<TextBlock x:Name="StopText" Text="Some test text"/>
<Rectangle Fill="SkyBlue"
Width="{Binding ElementName=StopText, Path=ActualHeight}"
Height="20"
RadiusX="5" RadiusY="5" Opacity="0.2"/>
</Canvas>
另外,您确实意识到您正在将 的宽度绑定Rectangle到Height的TextBlock,对吗?
如果这确实是您想要设置控件的方式,您将需要将Rectangle' 的 Width绑定到TextBlock'ActualWidth和。HeightActualHeight
更新
根据下面的评论,这是一个使用Grid没有绑定的实现:
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<TextBlock x:Name="StopText" Text="Some test text"/>
<Rectangle Fill="SkyBlue"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
RadiusX="5" RadiusY="5" Opacity="0.2"/>
</Grid>
Grid并Canvas 使用不同的布局系统,并且由于您没有使用所Canvas提供的功能,Grid因此是更好的选择。
子元素的最大区别在于Rectangle现在只使用 Horizontal 和VerticalAlignmenttoStretch跨越整个Grid,而不用担心任何东西的大小。