【问题标题】:Auto Sizing Wrap Panel in WPFWPF 中的自动调整包装面板大小
【发布时间】:2014-03-09 03:35:37
【问题描述】:

我有一个物品清单(气泡) 物品的大小取决于重量(气泡的直径)。

我正在尝试在WrapPanel 中添加气泡。我希望 Wrap Panel 应该 Wrap 并在其满后作为 Auto size 项目。

满容量

元素添加到满容量

Xaml

    <ItemsControl VerticalAlignment="Center">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Width="300" IsItemsHost="True" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.Items>
        <wrapPanelDemo:CircleUserControl CircleHeight="30" />
        <wrapPanelDemo:CircleUserControl />
        <wrapPanelDemo:CircleUserControl CircleHeight="50" />
        <wrapPanelDemo:CircleUserControl />
        <wrapPanelDemo:CircleUserControl CircleHeight="100" />
        <wrapPanelDemo:CircleUserControl />
        <wrapPanelDemo:CircleUserControl CircleHeight="200" />
        <wrapPanelDemo:CircleUserControl />
        <wrapPanelDemo:CircleUserControl />
        <wrapPanelDemo:CircleUserControl CircleHeight="250" />
        <wrapPanelDemo:CircleUserControl CircleHeight="100" />

    </ItemsControl.Items>
</ItemsControl>

还有

如果面板数量更多(让它们命名为 P1 和 P2 包含气泡),那么即使 P1 和 P2 具有不同的气泡,气泡(P1 中的重量 250)看起来应该与气泡(P2 中的重量 250)相同。 (重量与尺寸的比例应该相同 对于所有面板中的所有气泡)

【问题讨论】:

  • hmm.. 所以你希望面板内的项目而不是面板本身调整大小。暂时没有这个想法。我也看不出你到目前为止做了什么努力?

标签: c# wpf autoresize wrappanel


【解决方案1】:

自动调整大小到底是什么意思?如果您的意思是 wrappanel 应该扩展它的高度,我认为这已经内置了 wrappanel 的行为。限制包装板高度的是其容器的高度。尝试将 wrappanel 放在 scrollviewer 中,你会得到它与内容一起不断扩展。随着 wrappanel 的高度超出可用空间,将出现滚动条。测试示例:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <ScrollViewer>
        <ItemsControl VerticalAlignment="Center">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel Width="100" IsItemsHost="True" />
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
            <ItemsControl.Items>
                <Ellipse Height="30" Width="30" Fill="Green" />
                <Ellipse Height="50" Width="50" Fill="Green" />
                <Ellipse Height="100" Width="100" Fill="Green" />
                <Ellipse Height="100" Width="100" Fill="Green" />
            </ItemsControl.Items>
        </ItemsControl>
    </ScrollViewer>
</Grid>

结果:

【讨论】:

  • 自动调整大小意味着...。面板将调整其中所有项目的大小以适应新添加的项目...。面板中的所有项目将始终可见(滚动条不应作为每个项目都应该可见)
【解决方案2】:

我认为如果您将包装面板放在 StackPanel 中,那么您应该得到您需要的结果

【讨论】:

    猜你喜欢
    • 2011-03-01
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    • 2010-12-22
    • 2013-03-11
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    相关资源
    最近更新 更多