Правильная привязка заключается в использовании 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
к ActualWidth
TextBlock
, а 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
теперь просто использует Horizontal и VerticalAlignment
до Stretch
для всего Grid
, вместо того, чтобы беспокоиться о размерах чего-либо.
person
Wonko the Sane
schedule
24.09.2010