WPF WrapPanel中的动态项填充

时间:2015-02-02 19:57:56

标签: c# wpf padding wrappanel

是否有任何方法可以根据WrapPanel width调整WPF控件中的填充,当调整窗口大小时, Windows资源管理器会执行此操作。

以下是几个例子:

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:0)

如果您使用的是ItemsControl,则可以定义ItemsContainerStyle并设置它的MaxHeight和MaxWidth值。

通过这样做,项目可以增长到有限的大小,并且会发生填充效果。

答案 1 :(得分:0)

我建议使用Binding和Converter设置Width的{​​{1}}属性,以确定每个项目的正确大小。

在您的示例中,看起来您的项目大小是静态的,并且您只想分发剩余空间,因此将ItemContainerStyle属性绑定到Width(这是可以使用的ItemWidth的总数适合WrapPanel.Width)

这是一个使用100作为项目宽度的简单示例:

WrapPanel.Width / NumberOfItems

转换器看起来像这样(我可能在这里有语法错误,因为我没有使用IDE来验证代码):

<ItemsControl.ItemContainerStyle>
    <Style>
        <Setter Property="Width" 
                Value="{Binding ElementName=MyWrapPanel, 
                                Path=ActualWidth, 
                                Converter={StaticResource MyCustomWidthConverter}, 
                                ConverterParameter=100" />
    </Style>
</ItemsControl.ItemContainerStyle>