ser*_*hio 2 wpf binding actualwidth actualheight
我试图创建一个自定义控件,具有半透明的圆形背景:
<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>
Run Code Online (Sandbox Code Playgroud)
问题是我不能绑定到ActualHeight/ ActualWidthproperties,因为它们不是依赖项.
如何处理相同大小的矩形和文本框?
Won*_*ane 10
正确的绑定是在绑定到另一个元素时使用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>
Run Code Online (Sandbox Code Playgroud)
此外,你意识到你的宽度结合Rectangle到Height的TextBlock,对不对?
如果这是你想要设置控件的方式,你需要将Rectangle's Width 绑定到TextBlock's ActualWidth和Heightto 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>
Run Code Online (Sandbox Code Playgroud)
Grid并Canvas 使用不同的布局系统,因为您没有使用Canvas提供的功能,Grid是更好的选择.
在子元素的最大区别是,Rectangle现在只是使用水平和VerticalAlignment对Stretch整个Grid,而不必担心任何东西的尺寸.
| 归档时间: |
|
| 查看次数: |
10031 次 |
| 最近记录: |