Правильная привязка должна использовать 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
к TextBlock
s 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
используют различные системы макетов , и поскольку вы не используете функциональность, предоставляемую Canvas
, Grid
является лучшим выбором.
Большое отличие дочерних элементов заключается в том, что Rectangle
теперь просто использует горизонтальный и VerticalAlignment
до Stretch
по всему Grid
, вместо того, чтобы беспокоиться о размерах чего-либо.