2014-02-12 4 views
0

У меня есть маленький прямоугольник, который изменяется по размеру, и мне нужно показать расстояние в пикселях от границы до ближайшей стороны изображения.Ошибка привязки WPF

В настоящее время красные цифры - это ширина и высота синего прямоугольника. В результате красные цифры должны показывать длину синих полос вместо.

У меня есть следующие привязки:

<Grid x:Name="sizeInfo" SnapsToDevicePixels="True"> 
    <TextBlock Text="{Binding Width, StringFormat={}{0:0}}" Background="Transparent" Padding="0,0,0,0" Foreground="#FF0000" Margin="0,0,0,-21" HorizontalAlignment="Center" VerticalAlignment="Bottom"/> 
    <TextBlock Text="{Binding Width, StringFormat={}{0:0}}" Background="Transparent" Padding="0,0,0,0" Foreground="#FF0000" Margin="0,-21,0,0" HorizontalAlignment="Center" VerticalAlignment="Top"/> 

    <TextBlock Text="{Binding Height, StringFormat={}{0:0}}" Background="Transparent" Foreground="#FF0000" Padding="0,0,0,0" Margin="-21,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Center"/> 
    <TextBlock Text="{Binding Height, StringFormat={}{0:0}}" Background="Transparent" Foreground="#FF0000" Padding="0,0,0,0" Margin="0,0,-21,0" HorizontalAlignment="Right" VerticalAlignment="Center"/> 
</Grid>  

Проблема заключается в том, что я не могу понять, что связывание должно выглядеть. Наверное, есть общий способ делать такие вещи, но я не знаю.

enter image description here

+0

у вас есть какой-либо 'DataContext' получить' 'Width' и Height'? Где вы их получите .. от 'sizeInfo'' Grid'? – Sankarann

+0

@Sankarann, что сетка является частью стиля, а контекст данных - DataContext = "{Binding RelativeSource = {RelativeSource TemplatedParent}} – Terko

ответ

1

Попробуйте это:

<Rectangle Name="MyRect" 
      Fill="Gainsboro" 
      Width="174" 
      Height="80" /> 

<Grid Name="SizeInfo" 
     Width="{Binding Path=Width, ElementName=MyRect}" 
     Height="{Binding Path=Height, ElementName=MyRect}" 
     HorizontalAlignment="Center" 
     VerticalAlignment="Center"> 

    <!-- StringFormat in this case is not required --> 
    <TextBlock Text="{Binding Path=Width, ElementName=MyRect}" ... /> 
    <TextBlock Text="{Binding Path=Width, ElementName=MyRect}" ... /> 

    <TextBlock Text="{Binding Path=Height, ElementName=MyRect}" ... /> 
    <TextBlock Text="{Binding Path=Height, ElementName=MyRect}" ... /> 
</Grid> 

Output

enter image description here

Смежные вопросы