在动态绑定Border时,Border的ActualHeight / ActualWidth不是预期的

时间:2013-01-08 07:04:17

标签: silverlight xaml windows-phone actualwidth actualheight

我在Grid的{​​{1}}中有两个边框。第一个边框在第一行,第二个边框在第二行。

UserControl

我动态地将值绑定到行定义,以便边框高度也适合行高。

当我从ViewModel创建这个<UserControl> <Grid Height="100"> <Grid.RowDefinitions> <RowDefinition Height="{Binding RowOneLength}" /> <RowDefinition Height="{Binding RowTwoLength}" /> </Grid.RowDefinitions> <Border x:Name="Border1" Grid.Row="0"> </Border> <Border x:Name="Border2" Grid.Row="1"> </Border> </Grid> </UserControl> 的对象并调用其后面的代码中的方法时,我没有得到边框原始高度(我期望的是我给出的值)并且它显示了一半两个边框的网格高度。过了一会儿,边框尺寸改变了我的预期。

我想从一开始就检索正确的值。我能做些什么来改变这种行为?

UserControl

这是我的代码隐藏方法。从我的public void SetImagesForNewPattern(int val1, int val2) { this.Loaded += (sender, e) => { var len1 = Border1.ActualHeight+Border1.ActualWidth; var len2 = Border2.ActualHeight+Border2.ActualWidth; } } 调用此方法。我得到的确切实际宽度&amp;仅在边界ViewModel事件之后的高度。

1 个答案:

答案 0 :(得分:1)

根据this msdn article,当UserControl事件被提升时,Loaded最终未呈现。

您可以使用SizeChangedUserControl个实例的Border事件,但这意味着要重新计算该值,因为在测量和呈现{{{}期间尺寸会发生变化1}}。