我在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
事件之后的高度。
答案 0 :(得分:1)
根据this msdn article,当UserControl
事件被提升时,Loaded
最终未呈现。
您可以使用SizeChanged
或UserControl
个实例的Border
事件,但这意味着要重新计算该值,因为在测量和呈现{{{}期间尺寸会发生变化1}}。