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 属性来限制元素本身,直接或通过样式。
我有一个 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 属性来限制元素本身,直接或通过样式。