我不知道我要查找的容器/控件是什么,所以我无法真正搜索它。
+
会在现有版权的右侧添加My Usercontrol的新实例X
会丢弃已点击的用户控件e.g。也许有一种风格可以将ListBox变成合适的东西?
答案 0 :(得分:2)
我会使用ItemsControl
并将其ItemsPanelTemplate
自定义为您想要的任何内容。
ItemsControls
用于迭代对象集合,并以您想要的任何形式显示它们。如果你感兴趣,我写了一些简单的代码示例here,或者这是另一个简单的例子:
<DockPanel x:Name="RootPanel">
<Button Style="{StaticResource AddButtonStyle}"
DockPanel.Dock="Right" VerticalAlignment="Center"
Command="{Binding AddItemCommand" />
<ScrollViewer>
<ItemsControl ItemsSource="{Binding MyCollection}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<local:MyUserControl />
<Button Style="{StaticResource RemoveButtonStyle}"
Command="{Binding ElementName=RootPanel, Path=DataContext.RemoveItemCommand}"
CommandParameter="{Binding }"
HorizontalAlignment="Left" VerticalAlignment="Top" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</DockPanel>
您的ItemsControl将绑定到ObservableCollection
个对象,而您的添加/删除按钮只会添加/删除该集合中的项目。由于它是ObservableCollection
,因此当集合发生变化并自动更新时,它将通知UI。
答案 1 :(得分:1)
您确实可以使用ListBox并设置其ItemTemplate和ItemsPanelTemplate:
<ListBox>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"></StackPanel>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Label Content="{Binding Name}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
当然,你的ItemTemplate会引用你的控件。
答案 2 :(得分:1)
你可以看一下叫做旋转木马控件的东西,它使用它后面的对象列表,并以类似于itunes的方式显示它们。这可能有点过头但是一个解决方案。可以看到一个例子here
如果这对于您的需求来说太高级了,它是否可以像带有滚动条的堆叠面板一样简单,滚动条绑定到用户控件列表?