Grid
aに a に2 つの境界線がありUserControl
ます。最初の境界は行 1 にあり、2 番目の境界は行 2 にあります。
<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>
境界線の高さも行の高さに収まるように、値を行定義に動的にバインドしています。
ViewModel からこのオブジェクトを作成し、UserControl
そのコード ビハインドでメソッドを呼び出すと、境界線の元の高さが得られず (私が期待するのは、私が指定した値です)、両方の境界線のグリッドの高さの半分の長さを示しています。しばらくすると、境界線のサイズが期待どおりに変更されます。
最初から正しい値を取得したい。この動作を実現するにはどうすればよいですか?
public void SetImagesForNewPattern(int val1, int val2)
{
this.Loaded += (sender, e) =>
{
var len1 = Border1.ActualHeight+Border1.ActualWidth;
var len2 = Border2.ActualHeight+Border2.ActualWidth;
}
}
これは私のコードビハインドメソッドです。このメソッドは my から呼び出されますViewModel
。境界SizeChanged
イベントの後でのみ、正確な実際の幅と高さを取得しています。