WPF: Как ретранслировать оболочку?
У меня есть WrapPanel
поместить в сетку и заполнить его динамически ToggleButtons
,
Высота ряда, где wrappanel
находится в, рассчитывается на основе количества ToggleButtons
в WrapPanel
составная часть.
Когда я загружаю свой экран, элементы в wrappanel
неправильно выложены Однако, когда я изменяю размер формы, элементы отображаются правильно.
Есть ли способ, с помощью которого вы можете заставить ретранслировать элементы, как это происходит при изменении размера формы?
Ниже вы можете увидеть мой код WPF:
<Grid x:Name="grdScreen">
<Grid.RowDefinitions>
<RowDefinition x:Name="rdToolBar" Height="21" />
<RowDefinition />
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150" />
<ColumnDefinition Width="150" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<ToggleButton Grid.Column="0" Name="btnlegende" Margin="1,1,11,1" Click="btnlegende_Click" />
<Button Grid.Column="1" Name="btnlayout" Margin="1" Click="btnlayout_Click" />
<WrapPanel x:Name="pnlHeader" Grid.Column="2" />
</Grid>
...
</Grid>
2 ответа
Решение
Вы можете вызвать InvalidateArrange() или InvalidateMeasure(), чтобы заставить WPF повторить соответствующую фазу макета.