WrapPanel 与 ItemsControl 一起使用时不换行

WrapPanel not wrapping when using it with ItemControl

我有一个 WrapPanel,我正在使用 UserControls 填充我的 ViewModel:

<WrapPanel Width="250" Orientation="Horizontal" Margin="3">
   <ItemsControl ItemsSource="{Binding PlaceableObjectsContent}">
      <ItemsControl.ItemTemplate>
          <DataTemplate DataType="{x:Type local:PlaceableObjectViewModel}">
              <local:PlaceableObjectUserControl>
                 <local:PlaceableObjectUserControl.InputBindings>
                     <MouseBinding MouseAction="LeftClick"
                                                  Command="{Binding DataContext.OnPlaceableObjectClicked, RelativeSource={RelativeSource AncestorType=ItemsControl}}"
                                                  CommandParameter="{Binding}"/>
                 </local:PlaceableObjectUserControl.InputBindings>
              </local:PlaceableObjectUserControl>
          </DataTemplate>
      </ItemsControl.ItemTemplate>
   </ItemsControl>
</WrapPanel>

当我用随机控件填充它们时,一切正常!我已经阅读了一些关于使用 ItemTemplate 的问题!? 如果是真的,我该如何处理?

谢谢

您正在将单个 ItemsControl 放入 WrapPanel 中。那不会做任何事情。如果您希望 ItemsControl 使用 WrapPanel 来托管它自己的项目,方法如下:

<ItemsControl 
    ItemsSource="{Binding PlaceableObjectsContent}"
    Width="250"
    Margin="3"
    >
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>

    <!-- etc. -->

请注意,必须限制 ItemsControl 的宽度才能起作用:它必须受其父级或网格列的大小限制,或者甚至通过设置 ItemsControl 的 Width 或 MaxWidth 属性来限制元素本身,直接或通过样式。