我尝试创建一个自定义控件,具有半透明的圆角背景:
<Canvas>
<TextBlock x:Name="StopText" Text="Some test text"/>
<Rectangle Fill="SkyBlue"
Width="{Binding Source=StopText, Path=ActualHeight}"
Height="20"
RadiusX="5" RadiusY="5" Opacity="0.2"/>
</Canvas>问题是我可能不能绑定到ActualHeight/ActualWidth属性,因为它们不是依赖属性。
怎样才能保持矩形和文本框的大小相同?
发布于 2010-09-24 21:17:35
正确的绑定是在绑定到另一个元素时使用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的宽度绑定到TextBlock的Height,对吗?
如果这确实是您想要设置控件的方式,那么您需要将Rectangle的宽度绑定到TextBlock的ActualWidth,并将Height绑定到ActualHeight。
更新根据下面的评论,这是一个使用没有绑定的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 use different layout systems,并且由于您没有使用Canvas提供的功能,因此Grid是更好的选择。
子元素中最大的不同之处在于,Rectangle现在只在整个Grid中使用Stretch和VerticalAlignment,而不是担心任何东西的大小。
https://stackoverflow.com/questions/3787312
复制相似问题