【问题标题】:WPF: How to relayout wrappanel?WPF:如何重新布局包装面板?
【发布时间】:2010-06-25 08:38:50
【问题描述】:

我有一个WrapPanel 放置在一个网格中,并用ToggleButtons 动态填充它。
wrappanel所在行的高度是根据WrapPanel组件中ToggleButtons的个数来计算的。

当我加载屏幕时,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>

【问题讨论】:

    标签: wpf wrappanel


    【解决方案1】:

    试试这个.UpdateLayout();

    【讨论】:

    • 我已经试过了。甚至 pnlHeader.upateLayout()。它不起作用。
    • 尝试将 Wrap 面板代码单独放在用户控件中,我的意思是不在 Grid 中。
    • 我用 StackPanel 替换了网格,现在它似乎可以工作了。
    【解决方案2】:

    您可以调用InvalidateArrange()InvalidateMeasure() 来强制 WPF 重做相应的布局阶段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-28
      • 2014-09-29
      • 2011-01-08
      • 1970-01-01
      • 2011-05-26
      相关资源
      最近更新 更多