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 ответа

Решение

Попробуйте это.UpdateLayout();

Вы можете вызвать InvalidateArrange() или InvalidateMeasure(), чтобы заставить WPF повторить соответствующую фазу макета.

Другие вопросы по тегам