【发布时间】:2010-01-04 20:10:32
【问题描述】:
我正在尝试将 TextBlock 数据绑定到 Rectangle 的 RenderSize。这是代码。
<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>
当我移动滑块时,rect 变大,并且第一个 TextBox 正确更新。 但是,ActualWidth 和 RenderSize 保持为 0 和 0,0。
当我单击 Button 时,我以编程方式获取 RenderSize 并将其显示在最后一个 TextBlock 中,它不同于 0,0。
private void Button_Click_1(object sender, RoutedEventArgs e)
{
info.Text = rect.RenderSize.ToString();
}
所以我对 RenderSize 的绑定没有正确更新 TextBox... 为什么? 感谢您的帮助,
【问题讨论】:
-
我在这里写了一个类似问题的答案:stackoverflow.com/questions/1602148/…它应该对你有用。
-
又一次在 silverlight 中被破解,它开始让我发疯了......
-
如果您只处理元素上的 SizeChanged 事件并在事件处理程序中根据需要更新值,这可能会更容易。我链接到的帖子中描述的解决方案仅在您必须使用数据绑定时才需要。
标签: .net silverlight