Я пытаюсь привязать DataBlock к RenderSize прямоугольника. Вот код.Почему моя привязка не обновляется на UIElement.RenderSize или UIElement.ActualWidth?
<StackPanel x:Name="root">
<Rectangle x:Name="rect" Fill="Green" RenderTransformOrigin="0.5,0.5" Height="100" Width="100" />
<TextBlock Text="{Binding ElementName=rect, Path=Width}"></TextBlock>
<TextBlock Text="{Binding ElementName=rect, Path=ActualWidth}"></TextBlock>
<TextBlock Text="{Binding ElementName=rect, Path=RenderSize}"></TextBlock>
<Slider Value="{Binding ElementName=rect, Path=Width, Mode=TwoWay}" Maximum="200"></Slider>
<Button Content="Manually Get RenderSize" Click="Button_Click_1"></Button>
<TextBlock x:Name="info"></TextBlock>
</StackPanel>
Когда я перемещаю ползунок, прямоугольник становится больше, и первый TextBox обновляется правильно. Тем не менее, ActualWidth и RenderSize остаются равными 0 и 0,0.
Когда я нажимаю кнопку «Я», я получаю программный код RenderSize и показываю его в последнем текстовом блоке, который отличается от 0,0.
private void Button_Click_1(object sender, RoutedEventArgs e)
{
info.Text = rect.RenderSize.ToString();
}
Так что моя привязка к RenderSize не обновляет TextBox правильно ... Почему? Спасибо за вашу помощь,
снова еще один взлом в silverlight, он начинает заставлять меня сходить с ума ... –
может быть проще, если вы просто обрабатываете событие SizeChanged в элементе и обновляете значение, соответствующее соответствующему обработчику события. Решение, описанное в сообщении, которое я связал, необходимо только в том случае, если вы должны использовать привязку данных. – KeithMahoney