У меня две границы в Grid
в UserControl
. Первая граница находится в строке 1, а вторая граница находится в строке 2.ActualHeight/Actual Ширина границы не так, как ожидается при динамическом связывании
<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
из ViewModel и вызываю метод в его коде позади, я не получаю исходную высоту границ (что я ожидаю, это значение, данное мной), и оно показывает половину длины сетки высота для обеих границ. Через некоторое время размер границы изменится на то, что я ожидаю.
Я хочу получить правильные значения с самого начала. Что я могу сделать, чтобы добиться такого поведения?
public void SetImagesForNewPattern(int val1, int val2)
{
this.Loaded += (sender, e) =>
{
var len1 = Border1.ActualHeight+Border1.ActualWidth;
var len2 = Border2.ActualHeight+Border2.ActualWidth;
}
}
Это мой метод позади кода. Этот метод вызывается из моего ViewModel
. Я получаю точную фактическую ширину & высота только после границы SizeChanged
событие.
Когда вы выполняете код позади? Возможно, UserControl полностью не отображается при выполнении кода. Было бы полезно, если бы вы добавили код в свой вопрос. – MatthiasG
@MatthiasG привет, я обновил свой вопрос с кодом позади. сообщите мне, если вы найдете что-нибудь полезное для ответа – asitis