首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绑定到ActualHeight不起作用

绑定到ActualHeight不起作用
EN

Stack Overflow用户
提问于 2010-09-24 21:04:34
回答 1查看 11.9K关注 0票数 2

我尝试创建一个自定义控件,具有半透明的圆角背景:

代码语言:javascript
复制
<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属性,因为它们不是依赖属性。

怎样才能保持矩形和文本框的大小相同?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-24 21:17:35

正确的绑定是在绑定到另一个元素时使用ElementName,而不是Source

代码语言:javascript
复制
<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的宽度绑定到TextBlockHeight,对吗?

如果这确实是您想要设置控件的方式,那么您需要将Rectangle的宽度绑定到TextBlockActualWidth,并将Height绑定到ActualHeight

更新根据下面的评论,这是一个使用没有绑定的Grid的实现:

代码语言:javascript
复制
<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>

GridCanvas use different layout systems,并且由于您没有使用Canvas提供的功能,因此Grid是更好的选择。

子元素中最大的不同之处在于,Rectangle现在只在整个Grid中使用StretchVerticalAlignment,而不是担心任何东西的大小。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3787312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档